Dear diary, on Sat, Oct 07, 2006 at 11:33:29AM CEST, I got a letter where Junio C Hamano <junkio@xxxxxxx> said that... > When we introduced symref, "cat .git/HEAD" stopped being the way > to read the value of the tip of the current branch, "echo > $commit >.git/HEAD" stopped being the way to update it, and > "rev-parse --verify HEAD" and "update-ref HEAD $commit" were > introduced at the same time as the official alternatives to > support both old and new implementations of .git/HEAD. > > The way to find out which branch we are currently on used to be > "readlink .git/HEAD"; that stopped to be true, and we introduced > "symbolic-ref HEAD" as the official alternative to support both > old and new implementation. > > The way to see if a random symbolic link whose name happens to > be HEAD is a symref has been to see if it points at a path that > begins with "refs/". Cogito does [ ! -s "$_git/HEAD" ] || { _git_head="$(git-symbolic-ref HEAD)"; _git_head="${_git_head#refs/heads/}"; } in the common initialization code, so that cg-reset works even on repositories with broken HEAD. It hasn't been an issue in the past since HEAD as a dangling symlink indeed _has_ been broken HEAD in the past. That said, at least cg-reset will indeed repair it: if ! [ -s "$_git/HEAD" ]; then rm -f "$_git/HEAD" # XXX: git-symbolic-ref is a weenie and won't do the job at this point. echo "ref: refs/heads/$_git_head" >"$_git/HEAD" fi But it's still not nice. -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ #!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj $/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1 lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/) - 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