Subject: Re: I just pulled, and git log --graph does not show all

From: SZEDER Gábor <[email-masked]>
Date: Wed, 9 Oct 2019 15:23:45 +0200

On Wed, Oct 09, 2019 at 09:13:56AM +0300, Uwe Brauer wrote:
> Could you please try out 
> git clone https://git.code.sf.net/p/matlab-emacs/src matlab-emacs-hg

This repository contains two branches: 'master' and 'strings'.  From
these two 'master' is the default branch, so that is that 'git clone'
will check out for you; note the '*' in front of 'master':

  $ git branch --all
  * master
    remotes/origin/HEAD -> origin/master
    remotes/origin/master
    remotes/origin/strings

> Then you will see
> 
> That 
> git log --graph
> and
> 
> git log --graph --all
> 
> Are giving two different results and I don't understand why the branch
> is not shown when using 
> 
> git log --graph

Without any ref parameter 'git log' shows the history starting at the
currently checked out commit (in this respect it behaves the same way
as 'hg log'), so it only shows the history of 'master'.  'git log
--all' means "show the history of all refs in the repository", so it
shows the history of the remote branch 'strings' as well.

As far as I can tell all Git commands above behave as they should.

> Funny thing is when I use the hg-git plugin and run 
> 
> hg clone https://git.code.sf.net/p/matlab-emacs/src matlab-emacs-hg
> 
> I see this branch, converted to a hg bookmark.

For some reason after cloning that repository with Mercurial and its
hg-git plugin it checks out the 'strings' branch:

  $ hg bookmarks 
     master                    170:6c03da83e522
   * strings                   195:b2396f3ceca3

Consequently, when you run 'hg log' without a branch/bookmark/whatever
parameter it shows the history of the 'strings' branch.

I'm not sure what to think about 'hg clone' checking out a branch
other than the default branch.  In Git this would definitely be a bug.
In Mercurial, I don't know; given my limited experience I don't want
to outright call it a bug.  I think it would be worth reporting it to
the 'hg-git' project.

Anyway, in your first email you asked how you can merge that branch
into 'master'.  The command 'git merge origin/strings' will "merge" it
without actually creating a merge commit, because 'strings' builds
entirely on top of 'master'; this is what Git calls a "fast-forward
merge".  If you do want a merge commit, then run 'git merge --no-ff
origin/strings'.