Re: git pull and merging.
flat view
From: Aneesh Kumar K.V <hidden>
Date: 2016-08-11 19:22:09
Josef Weidendorfer wrote:
On Wednesday 06 December 2006 11:05, Aneesh Kumar wrote:quoted
[branch "devel"] remote = origin merge = devel [....] Now i thought merge should be local reference. So i changed it to merge = remotes/origin/devel. That also didn't work. Then i tried the name of the branch should be indicated as "refs/heads/devel" . That also didn't work. So i guess i am missing something.See man page of git-repo-config: branch.<name>.merge When in branch <name>, it tells git fetch the default remote branch to be merged. I assume that the "devel" branch on the remote repo you cloned from is also "devel", more exactly "refs/heads/devel". Now, instead of "git pull", git should default to git pull origin refs/heads/devel:refs/remotes/origin/devel
this means the remote reference is refs/heads/devel and local tracking branch for that is refs/remotes/origin/devel.
ie. it should update the local tracking branch "refs/remotes/origin/devel" with the remote branch "refs/heads/devel". The tracking branch "refs/remotes/origin/devel" will be merged with current branch afterwards.
That will be merged is the tricky part.
Now looking at the documentation for branch.<name>.merge, it talks about the remote branch, which is "refs/heads/devel" in your case, ie. the first part of the refspec of the full "git pull" command above.
This is most confusing part. What merge indicate is not about refs/heads/devel should track refs/remotes/origin/devel. That is specfied in the remote config option. What merge indicate is that when in a local branch ( not the tracking one under remotes/origin) which branch from remote need to be used to merge to the local branch.
So, as you already posted (without explanation, therefore this mail),
the config should be
[branch "devel"]
remote = origin
merge = refs/heads/devel
However, "devel" alone should work here, as it can be matched with remote
"refs/heads/devel". Seems to be a bug, as branch.<name>.merge seems to only
being compared with the full canonical name in the implementation.I guess we need to have a standard way of saying the branches. May be we want to document it in repo-config. local branch on which changes can be made <branch-name> local tracking branch refs/remotes/<remote-name>/<branch-name> remote branch refs/heads/<branch-name>