From: Geert Uytterhoeven Date: Fri, 20 Feb 2009 14:31:22 GMT Subject: Re: Recovering from missing objects? Message-ID: In-Reply-To: <7vvdr6j6hz.fsf@gitster.siamese.dyndns.org> Hi Junio, On Thu, 19 Feb 2009, Junio C Hamano wrote: > Geert Uytterhoeven writes: > > I start to see suspicious messages about missing objects in one of my working > > repositories: > > > > | vixen$ git gc > > | error: Could not read c406ab0be69c912ea59233595a071478103cdad8 > > | fatal: bad tree object c406ab0be69c912ea59233595a071478103cdad8 > > | error: failed to run repack > > | vixen$ > > > > I identified the missing object listed above to be part of a remote repository. > > Doing a `git remote update' doesn't fetch it again, as git is too smart and > > thinks I already have everything. > > > > If I clone the remote repository, I have the object in the new clone. > > However, how do I get the missing object back into the .git directory of my > > working repository? > > In the new clone: > > $ IT=c406ab0be69c912ea59233595a071478103cdad8 > $ TYPE=$(git cat-file -t $IT) > $ git cat-file $TYPE $IT >/var/tmp/$IT.raw > > Go to the repository that lacks the object and then > > $ git hash-object -t $TYPE -w --stdin > After that you may find objects that $IT needs to reference. You can > obviously repeat the above procedure until you have nothing missing. Thanks! It worked fine for most of the missing objects. For some of them (type commit), I still get: | vixen$ git show 32582324956483840d1ae90726bbe879cc48f63d | fatal: unable to read destination tree (32582324956483840d1ae90726bbe879cc48f63d | vixen$ after importing it from the other repository. > I also suspect you could do this instead; I haven't thought things through > and that is why I say "suspect" but this is safe (i.e. not destructive) > and may worth a try. > > In the new clone: > > $ IT=c406ab0be69c912ea59233595a071478103cdad8 > $ H=$(git rev-list --objects $IT | git pack-objects mine) > $ mv mine-$H.pack /var/tmp > > Go to the repository that lacks the object and then > > $ git unpack-objects