threads / discuss / 21985

repo corruption - Egit's fault?

Subject: repo corruption - Egit's fault?

## tl;dr

4 messages between Dec 18, 2009 and Dec 18, 2009.

replies: 3people: 2as markdown or json

Eugene Sajine· Dec 18, 2009, 18:06 UTC · lore
Hi,

We have imported a project from CVS. Then created a bare repo and placed on the central server. From the server repos are served via git protocol for push and pull operations (no SSH is involved for intranet set up) After this operations there were several extensive changes made (3 commits but they were pretty big) in development branch which were then pushed to the server. So the branch was pushed too. All changes and commits and pushes were performed under eclipse 3.5 using Egit plugin v0.5.

After it I could not clone this repo from the server as it was giving me an error like this (I will shorten it up a bit using “…” as I have no way to copy paste):

$git clone git://server/repo.git Initialized empty git… remote:counting…done remote:compressing…done remote: aborting due to possible repository corruption on the remote side. Receiving object: 100% …done Resolving deltas: 100% …done error: waitpid (async) failed fatal: error in sideband demultiplexer (I know right words to curse now;))

When I’m looking at the bare repo in CGit  it shows me  Bad object: and object SHA-1 instead of  the tree.

As the only difference between this project and about 30 others was that there was an additional branch pushed via Egit I suspect that this is what screwed up things, but I ‘m not sure… I’m in progress of testing it I don’t know if I will be able to reproduce.

Please, advise if this can be fixed and which options I have if it will happen again (how to properly and quickly restore bare repo)

Thanks, Eugene

Shawn O. Pearce· Dec 18, 2009, 18:16 UTC · re: Eugene Sajine · lore

Re: repo corruption - Egit's fault?

Eugene Sajine <euguess@gmail.com> wrote:
Show 7 quoted lines
> When I???m looking at the bare repo in CGit ??it shows me ??Bad object:
> and object SHA-1 instead of ??the tree.
> 
> As the only difference between this project and about 30 others was
> that there was an additional branch pushed via Egit I suspect that
> this is what screwed up things, but I ???m not sure??? I???m in progress of
> testing it I don???t know if I will be able to reproduce.

Its a somewhat known problem, but thus far has only shown up in contexts where I'm unable to get enough data to debug the problem.

  https://bugs.eclipse.org/bugs/show_bug.cgi?id=286653
> Please, advise if this can be fixed and which options I have if it
> will happen again (how to properly and quickly restore bare repo)

Delete the branch and repush it. The bug is that EGit didn't push all of the objects needed by the branch. If you put the missing objects from the source client into the server repository, it'll be fine.

To prevent this in the future, you can force a server to check during push by enabling receive.fsckObjects in the server repository's configuration file. A broken EGit client will have the push rejected immediately.

-- 
Shawn.
Eugene Sajine· Dec 18, 2009, 18:30 UTC · re: Shawn O. Pearce · lore

Re: repo corruption - Egit's fault?

Show 8 quoted lines
> To prevent this in the future, you can force a server to check during
> push by enabling receive.fsckObjects in the server repository's
> configuration file.  A broken EGit client will have the push
> rejected immediately.
>
> --
> Shawn.
>
Thank you for prompt answer, Shawn!

The problem is that as i'm maintaining multiple repos and their quantity will grow i would need to apply this setting site wide. Do you know if i can specify this service for git daemon? It seems like in git deamon docs this service is not listed, but just in case the docs are not up to date... I really don't want to set this up for every repo manually...

Thanks, Eugene

Eugene Sajine· Dec 18, 2009, 18:51 UTC · re: Eugene Sajine · lore

Re: repo corruption - Egit's fault?

Show 12 quoted lines
> Thank you for prompt answer, Shawn!
>
> The problem is that as i'm maintaining multiple repos and their
> quantity will grow i would need to apply this setting site wide. Do
> you know if i can specify this service for git daemon? It seems like
> in git deamon docs this service is not listed, but just in case the
> docs are not up to date... I really don't want to set this up for
> every repo manually...
>
> Thanks,
> Eugene
>

I found it. $ git config --global receive.fsckObjects true

should do the trick.

Thanks, Eugene

← back to recent threads