Thread (12 messages) flat view 12 messages, 3 authors, 2016-06-15

Re: Corruption in the repository

From: Sylvestre Ledru <hidden>
Date: 2016-06-15 22:50:15

Le mardi 14 décembre 2010 à 12:59 +0100, Christian Couder a écrit :
On Tue, Dec 14, 2010 at 10:47 AM, Sylvestre Ledru
[off-list ref] wrote:
quoted
Le mardi 14 décembre 2010 à 10:29 +0100, Christian Couder a écrit :
quoted
On Mon, Dec 13, 2010 at 7:11 PM, Sylvestre Ledru
[off-list ref] wrote:
quoted
Le lundi 13 décembre 2010 à 18:02 +0100, Christian Couder a écrit :
quoted
On Mon, Dec 13, 2010 at 5:47 PM, Sylvestre Ledru
[off-list ref] wrote:
quoted
Le lundi 13 décembre 2010 à 17:34 +0100, Christian Couder a écrit :
quoted
Hi,

On Mon, Dec 13, 2010 at 4:59 PM, Sylvestre Ledru
[off-list ref] wrote:
quoted
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?
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help