From: Aneesh Kumar K.V Date: Thu, 07 Dec 2006 06:46:24 GMT Subject: Re: git pull and merging. Message-ID: <4577B8C0.3060200@gmail.com> In-Reply-To: <200612061744.31213.Josef.Weidendorfer@gmx.de> Josef Weidendorfer wrote: > On Wednesday 06 December 2006 11:05, Aneesh Kumar wrote: >> [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..merge > When in branch , 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..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..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 local tracking branch refs/remotes// remote branch refs/heads/