Subject: git doesn't finds the parent of a commit (was: How to fetch missing pack)

From: Jörg Sommer <[email-masked]>
Date: Sun, 27 Apr 2008 12:47:04 +0200

Hi,

Shawn O. Pearce schrieb am Thu 24. Apr, 02:08 (-0400):
> If you know the name of the objects you are missing, you can
> make a temporary pack to transfer the list of objects:
> 
> 	# at good repo
> 	#
> 	git pack-objects --stdout <object.list >save.pack
> 
> 	# at bad repo
> 	#
> 	git index-pack --stdin <save.pack

I didn't know the list of objects I'm missing, but I used this little
script do find them:

anchor=7cb192eab0251911e2ca77d4ecceb621dd2d34f5
while true
do
    outp=$(git log --pretty=raw --raw $anchor 2>&1 >/dev/null)
    echo $outp
    [ $#outp -eq 0 ] && break
    cmt=${${outp##* \(}%\)}
    git cat-file -t $cmt >/dev/null 2>&1 && \
      cmt=$(git cat-file commit $cmt |grep '^tree ')
    echo ${cmt##* } | ssh server cd git\; git pack-objects --stdout | \
      git index-pack --stdin >/dev/null
done

Maybe it helps someone else. :)

But now, there's something else broken.

% git cat-file commit b63e99500137c913bd801a2f22b6cf88c63b95c5
tree 68a58fb97935f35c6fb7bcbcfed73b1697db000a
parent 3f061887c562b20d3ed3d1f764462cf986a1ad12
author Wincent Colaiuta <[email-masked]> 1195996542 +0100
committer Junio C Hamano <[email-masked]> 1196019475 -0800

Add "--patch" option to git-add--interactive

When the "--patch" option is supplied, the patch_update_cmd() function is
…

% git cat-file commit 3f061887c562b20d3ed3d1f764462cf986a1ad12
tree 636a0f9c085aac7ba539ef2ace03b3081481891a
parent 324ccbd6a09816af830b22b02bbeb06349141849
author Junio C Hamano <[email-masked]> 1196014210 -0800
committer Junio C Hamano <[email-masked]> 1196014993 -0800

add -i: Fix running from a subdirectory

This fixes the pathspec interactive_add() passes to the underlying
…

% git rev-parse b63e99500137c913bd801a2f22b6cf88c63b95c5~1
b63e99500137c913bd801a2f22b6cf88c63b95c5~1
fatal: ambiguous argument 'b63e99500137c913bd801a2f22b6cf88c63b95c5~1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

Can someone tell me what I'm doing wrong?

> Note that you may need to do this several times; e.g. if you are
> missing a tree you won't know what blobs you are missing until
> you load the tree and run fsck --full again to parse the tree and
> discover the missing blobs.

fsck --full reports only dangling objects, no breakage.

Bye, Jörg.
-- 
Die zehn Gebote Gottes enthalten 172 Wörter, die amerikanische
Unabhängigkeitserklärung 300 Wörter, die Verordnung der europäischen
Gemeinschaft über den Import von Karamelbonbons exakt 25911 Wörter.