Subject: Re: [Q] `git fetch tag NAME' into mirror repo does not update HEAD, what to do?

From: Tomas Carnecky <[email-masked]>
Date: Thu, 12 Aug 2010 13:05:29 +0200

On 8/12/10 12:38 PM, Brian Foster wrote:
> On Thursday 12 August 2010 10:33:13 Tomas Carnecky wrote:
> 
> Tom,
>  Thanks for the reply, but I suspect you didn't read
>  the problem correctly ....

I suspect I did but did not explain correctly (though I didn't realize
mirror implies bare, my bad).

> 
>> On 8/12/10 9:54 AM, Brian Foster wrote:
>>>  Bare repository ORIG's master looks like this:
>>> [ ... ] 
>>>  Repository SLAVE is a mirror clone of ORIG which
> NOTE.......................^^^^^^
>> [ ... ] 
>> Fetch only fetches commits. It doesn't update any local refs (other than
>> FETCH_HEAD). If you want to switch HEAD to that new tag, use checkout.

Oh boy, that explanation is really bad -.- What I meant is that if you
don't supply the <dst> part of the refspec it will only update
FETCH_HEAD. So 'git fetch origin master' will not update anything but
FETCH_HEAD.

>  No, a fetch in a mirror, when fetching all the way
>  to the HEAD (e.g., a simple `git fetch origin'),
>  does update the branch.  (You can easily modify the
>  script I included to prove this.)

There are different ways to invoke git fetch. Either way, fetch will
never modify HEAD. However, it can modify the branch that HEAD is
pointing to (in case HEAD is a symref). But you are not fetching a
branch, you are fetching a tag. So you need to use checkout after you
fetch it. Either 'git checkout FETCH_HEAD' or 'git checkout v2'.

tom