Bug in alternates
- From
- Michael Geddes <michael@frog.wheelycreek.net>
- Date
- Aug 12, 2010, 00:26 UTC
- Message-ID
- <201008120826.53902.michael@frog.wheelycreek.net>
Hi - I had a bit of a hiccup with git yesterday - there's a bit of a story to it, which at the least might be amusing. There's script to reproduce at the bottom if you don't care for the story.
I had done a git clone --reference Foo git@host:Foo Foo.New then after getting it right, I did mv Foo Foo.old mv Foo.New Foo
Then I had all these missing references, and I thought .. oh yeah, that's cause it can't find the references.. well I don't really know how to change that (I do now), but I want all the objects in that directory anyway for when I delete the Foo.old directory.. so I did a
cd Foo git fetch
.. so all was good for a while.. It was all there and hunky-dory.
Then.. the fated git gui 'garbage collect' dialogue appeared, and I thought, "why not", so I did.
At that point, git decided to pack all the references (yay) .. and then it said.. hmm.. are those available in my alternates .. let's see ..Foo/.git/objects .. yeah - all those objects are there.. so I can just remove that pack.
Woops.
If you're not following the story, the Foo repo had itself as an alternate.
Include me in replies please- I'm not on the list.
//.ichael Geddes
Here's the script: ------------8<-----------testalt-------------- #!/bin/sh mkdir testaltrep cd testaltrep git init for i in 1 2 3 4 5 6 7 8 9 ; do touch $i.txt git add $i.txt done git commit -m "Commit" echo "$PWD/.git/objects" > .git/objects/info/alternates # Seems like it has to be done like this to get it to repack. git repack -adl && git repack -ad && git repack -adl if git checkout master ; then echo OK ret=0 else echo BAD Unable to checkout reference ret=1 fi
cd .. rm -rf testaltrep
exit ${ret}