My git repo is broken, how to fix it ?
- From
- Alexander Litvinov <litvinov2004@gmail.com>
- Date
- Feb 28, 2007, 04:36 UTC
- Message-ID
- <200702281036.30539.litvinov2004@gmail.com>
Hello,
I use manualy compiled git under cygwin. Some time ago I have imported project from CVS and start to us it under git. To emulate 'separate remotes' schema for branches from CVS I clone imported git repo and work with it. From time to time I incrementaly update imported repo from cvs and sometimes use git-cvsexportcommit (from work repo) to export my changes and then get them using git-cvsimport.
Some times ago I descide to run fsck and found that by working repo is broken, while imported repo is correct. Is there way to fix it ?
>git version
git version 1.5.0.GIT (It was actualy compiled from e86d552 commit)
> git fsck > git fsck --full
error: packed 7f5fed8131fb32972c602dede29b9257a053ba67 from .git/objects/pack/pack-c4554978bbe079c9a43d6a13546a2fa314fe0884.pack is corrupt sha1 mismatch 7f5fed8131fb32972c602dede29b9257a053ba67
(This is a blob, git cat-file blob 7f5fed813 shows me my c++ header file that is partialy broken with ^@ symbols)
The repo I get using git-cvsimport is correct and does not contains that blob. I also tried git-log -p for all by branches to force git to show me what is the commit was broken but git-log finished without errors.
By the way, several times I interrupt git's commands like commit and pull using Ctrl-C.
I tried to unpack all objects:
> git-unpack-objects -r
< .git/objects/pack/pack-c4554978bbe079c9a43d6a13546a2fa314fe0884.pack; echo $? Unpacking 12868 objects 100% (12868/12868) done 0
No erorts here. But fsck find that broken blob:
> git fsck
dangling blob beb992198d4d8813ea51fd1cbbf38313ef490c22
git-cat-file shows me this this is a broken object with correct sha1 sum.
As a cunclusion: my repo has broken file and I don't see there is the brakage. Can I reconstruct file by sha1 sum :-) or can I do something to stop fsck warn me ?