Re: Corruption in the repository
Le mardi 14 décembre 2010 à 12:59 +0100, Christian Couder a écrit :
Show 75 quoted lines
> On Tue, Dec 14, 2010 at 10:47 AM, Sylvestre Ledru
> <sylvestre.ledru@scilab.org> wrote:
> > Le mardi 14 décembre 2010 à 10:29 +0100, Christian Couder a écrit :
> >> On Mon, Dec 13, 2010 at 7:11 PM, Sylvestre Ledru
> >> <sylvestre.ledru@scilab.org> wrote:
> >> > Le lundi 13 décembre 2010 à 18:02 +0100, Christian Couder a écrit :
> >> >> On Mon, Dec 13, 2010 at 5:47 PM, Sylvestre Ledru
> >> >> <sylvestre.ledru@scilab.org> wrote:
> >> >> >
> >> >> > Le lundi 13 décembre 2010 à 17:34 +0100, Christian Couder a écrit :
> >> >> >> Hi,
> >> >> >>
> >> >> >> On Mon, Dec 13, 2010 at 4:59 PM, Sylvestre Ledru
> >> >> >> <sylvestre.ledru@scilab.org> wrote:
> >> >> >> > Hello guys,
> >> >> >> >
> >> >> >> > I have a small problem with a git repository and I haven't find a way to
> >> >> >> > fix my problem.
> >> >> >> > I am using git with gerrit [1] as frontend (even if I don't think it is
> >> >> >> > related here).
> >> >> >> > For an unknown reason, the repository just became corrupted.
> >> >> >> >
> >> >> >> > When I try to clone the repository straight with the file system, the
> >> >> >> > following error is displayed:
> >> >> >> > error: refs/changes/98/398/1 does not point to a valid object!
> >> >> >> > error: refs/changes/98/398/2 does not point to a valid object!
> >> >> >> > fatal: object cff52c24fba28408e7d021a8f35a717bef31521d is corrupted
> >> >> >> > fatal: The remote end hung up unexpectedly
> >> >> >> >
> >> >> >> > git-prune & git-fsck both fail.
> >> >> >> >
> >> >> >> > Does anyone know how to repair this error ?
> >> >> >>
> >> >> >> Did you try what the FAQ suggests:
> >> >> >>
> >> >> >> https://git.wiki.kernel.org/index.php/GitFaq#How_to_fix_a_broken_repository.3F
> >> >> > Yes. It shows an other error and it doesn't match the error described on
> >> >> > this URL [1].
> >> >> >
> >> >> > I get the following:
> >> >> > error: refs/tags/5.3.0-beta-4 does not point to a valid object!
> >> >> > fatal: object 555a7c359b2e589ec10822d9b56cdfeee0105fe0 is corrupted
> >> >>
> >> >> The FAQ says that you should try to replace any broken and/or missing
> >> >> objects, so you should try to do that with object
> >> >> 555a7c359b2e589ec10822d9b56cdfeee0105fe0 (as described in the FAQ)
> >> >> even if the error message is not exactly the same.
> >> > Well, after clean the error about the tags, it does not provide any
> >> > interesting feedbacks like in the FAQ.
> >> >
> >> > Just some information [1] about some dangling commits (probably commit
> >> > under review in gerrit). Nothing valuable and the problem still occurs
> >> > on the client side.
> >>
> >> So you say that "git fsck --full" gives only dangling commits on the
> >> server, and you still get messages like "fatal: object XXXXX is
> >> corrupted" on the client when you try to clone with gerrit?
> > Not exactly, when I try to clone it through gerrit, it is working:
> > git clone ssh://sylvestre.ledru@git.scilab.org:29418/scilab
> > A bare clone works also.
> >
> > It is failing when I am using git-daemon (git clone
> > git://git.scilab.org/scilab) or a straight clone (git
> > clone /home/git/repositories/repo.git).
>
> This is very strange, are you sure you cannot use the resulting repo
> when it "fails"?
> What happens when you run "git fsck --full" on the resulting repos?
>
> > Both with the same error:
> > error: refs/changes/98/398/1 does not point to a valid object!
> > error: refs/changes/98/398/2 does not point to a valid object!
>
> Did you try to see which objects these refs are pointing to, and if
> they are on the server?
In fact, we have some progress on the issue. It looks like, at some point, two tags have been badly created [1].
Here is what Bruno did to fix the issue: 1 - Add valid references I put some valid commit id in refs/changes/98/398/{1,2}
2 - Find out what the corrupted object was for $> git cat-file -t cff52c24fba28408e7d021a8f35a717bef31521d tag $> cat refs/tags/5.3.0-beta-4 cff52c24fba28408e7d021a8f35a717bef31521d $> git tag -d 5.3.0-beta-4
3 - Server complains : fatal: git upload-pack: unable to fork git-pack-objects $> git gc (on the server) Solved this problem.
Hope this helps for others, Sylvestre
[1] Looks at my mail archive, the guy who created the tag did it this way: [$SHELL] cd /home/git/repositories/scilab.git [$SHELL] git tag -d 5.3.0-beta-4 [$SHELL] git tag -m "Scilab 5.3.0 Beta 4 Version" 5.3.0-beta-4 96b0b8e6d621a7ea7c88d63e10d57908689632ed