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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday 12 August 2010 14:32:41 Tomas Carnecky wrote:
> On 8/12/10 2:16 PM, Brian Foster wrote:
> >[ ... ]  This _does_ work:
> > 
> >     git reset --soft FETCH_HEAD
> >[ ... ] 
> >  Given that git-reset(1)'s purpose is to change the branch's
> >  head (or to change HEAD as I've been incorrectly describing
> >  it), that does make sense.
> 
> I expected git checkout to work even in a bare repo - as you can
> see I don't work that often inside bare repos :).

 <<<giggles>>>  No problem!  (I don't either, this situation was
 unexpected, but as SLAVE lagging behind ORIG is anticipated as
 being the usual case, we need to understand it.)

> You should use update-ref instead of reset. The problem with reset is
> that it changes the branch and not HEAD. Say initially your mirror had
> HEAD as symref pointing to refs/heads/master.

 Correct, it does.

>                                               When you run reset --soft
> v2 your master branch will now point to the same commit as the tag v2
> (and HEAD will be still pointing to refs/heads/master).

 Correct, that is what happens.  It also looks Ok to me,
 nor have any tests hit any snags.  It also happens to
 match how we (eventually) manually repaired SLAVE.

>                                                         When you use
> 'git update-ref --no-deref HEAD v2' it will modify HEAD

 NO, it gets an error (following is from a modified version
 of my previously-posted script):
────────────────────────────────────────────────────────
 ...
+ cd ../SLAVE.git                                           
+ git fetch --verbose origin tag v2                         
 ...
>From /work/tmp/git/ORIG                      
 * [new tag]         v2         -> v2        
+ git update-ref --no-deref HEAD v2          
error: Trying to write non-commit object 2bc324e6a68cb3704448c9f63ddc3bc0260c0b48 to branch HEAD                                                                                
fatal: Cannot update the ref 'HEAD'.                                                    
$ 
────────────────────────────────────────────────────────

 Using ‘git update-ref --no-deref HEAD FETCH_HEAD’ does
 not error, and, as you say (below), does seem to give
 me a detached head.

> 'git update-ref --no-deref HEAD v2' it will modify HEAD directly and
> have it point directly to the same commit as v2 (also called detached HEAD).

 I do_not_ want a detached head!  This has perhaps been
 confused by my improperly saying “update HEAD” when I
 meant “update the master branch”.  If you look back at
 my originally-posted diagrams, it's a reasonable guess
 I don't want a detached head.  Having HEAD continue to
 be a symref to refs/heads/master (which, in this case,
 is the same commit as v2) is correct.

 Thanks for your help, advice, and hints.
cheers!
	-blf-

--
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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]