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.3FYes. 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 corruptedThe 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