--- Junio C Hamano <junkio@xxxxxxx> wrote: > Junio C Hamano <junkio@xxxxxxx> writes: > > > Luben Tuikov <ltuikov@xxxxxxxxx> writes: > > > >> --- Junio C Hamano <junkio@xxxxxxx> wrote: > >>> > >>> Because [remote] is NOT about mapping. It asks the fetch > >>> mechanism to fetch from that remote, so the primary thing you > >>> should look at is .url, not RHS of colon on .fetch lines. Use > >>> of tracking branches is strictly optional. > >> > >> [remote "origin"] > >> url = http://blah/bleah.git > >> fetch = +refs/heads/*:refs/remotes/origin/* > >> > >> This basically says: "Get it" from such and such url, where > >> on the repo at that url, i.e. the remote side, you will > >> find stuff in "refs/heads/", and when you get it here, locally, > >> put it in refs/remotes/origin/. > > > > [remote "origin"] > > url = http://blah/blah.git > > fetch = refs/heads/master > > > > is also fine. The point is that you do not have to use tracking > > branches. ", and when you get it here, ..." part is optional. > > In other words, remote.*.fetch could be spelled as mapping to > cause them locally stored in tracking branches, but the storing > in tracking branches is merely a side effect of a fetch, not the > primary one. The primary effect is to fetch the necessary > objects and leave what was fetched in .git/FETCH_HEAD to > communicate with later 'git pull'. The side effect is optional, > so is spelling remote.*.fetch as a mapping. Oh ok -- I forgot about .git/FETCH_HEAD. > >> Yeah, but by default "refs/heads/branchA" doesn't exist (see > >> my previous email). It doesn't have to, since it specifies > >> the "remote part", but that has already been handled by > >> "[remote]". > > > > Obviously fetch needs to handle the remote part because that is > > the only name it exists at the remote. branch.*.merge is used > > by pull, not fetch, and fetch communicates with pull by using > > the remote name, because use of local tracking branches is > > optional. > > In other words, the remote name is the only thing that can be > used between fetch and pull to communicate. Fetch tells pull "I > fetched these from the remote", and pull uses that information > to make a merge, and the merge comment says "this merges the > branch xyz from that repository", using the 'xyz' name used at > the remote side, not your local tracking branch, which you may > or may not be using. Ok. Luben - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html