Re: Corrupted git repository?
On Tue, Feb 15, 2011 at 9:00 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 9 quoted lines
> Piotr Krukowiecki <piotr.krukowiecki.news@gmail.com> writes:
>
>> it looks like my git repository got corrupted today.
>>
>> git status shows no changes,
>> git cherry-pick says "error: Your local changes to the following files
>> would be overwritten by merge:",
>
> with some paths, or without naming any path?
With one path:
$ git status # On branch master nothing to commit (working directory clean)
$ git cherry-pick 7d193bb0c1f14908361d9d9d5e30f0c12d5f2c2f
error: Your local changes to the following files would be overwritten by merge:
<<PATH>>
Please, commit your changes or stash them before you can merge.
Aborting
$ git status # On branch master nothing to commit (working directory clean)
7d193bb comes from trunk, master was reset to a branch, the <<PATH>> is a file that was not changed in the commit, git clean -n -- <<PATH>> does not show anything
They should not have "assume unchanged" bit because I did git update-index --no-assume-unchanged --verbose -- <<PATH>>
>> git fsck starts checking objects but hangs on one "Checking tree"
>
> I take it that you are talking about "git fsck -v". Is it really "hangs",
> or just "takes a long time"?
I was too hasty - fsck finished fine. It just took long time for one object (a couple of minutes while other checked objects took less than second).
It only printed several dangling objects:
$ git fsck dangling tree 0ff163a56128d95c5b88c520f68792f6f900bb18 dangling commit deb988eeb2404dd1e57c8894c3cfd93dd316aca3 dangling tree 50323779bd6c0d4eb19664a3945c6c31fe9dadd4 dangling commit 9ed87852fdf6775a3c071faec05388eda5cd5de1 dangling commit a4d09c76a1b58bbf51f2b701407493c5ed9f9b78
> You mentioned that a clone is expensive so I
> am guessing that your repository has some huge trees or objects in
> general.
That's one reason, the other is that I'm using git-svn ...
> The details you gave in your message are a bit sketchy to give you an
> exact diagnosis, but if "cherry-pick" stops with the above message and
> tells you the names of files that are not tracked in your current branch,
"git log -- <<PATH>>" shows two commits for this file on this branch and on trunk, and "git status" does not list the file as untracked.
Show 7 quoted lines
> I don't see there is anything unusual going on. You have these files with
> random contents that git does not know about, and git is refusing to
> lose their contents by overwriting them during the cherry-pick.
>
> After making sure that they are indeed untracked paths, if you think you
> can remove them (or move them away), first do so and retry cherry-pick,
> and then everything should be Ok.
I believe the file is tracked and is not modified?
I have deleted the whole top-level directory in which the file was and run:
$ git status | grep <<PATH>> # deleted: <<PATH>>
$ git checkout -- <<top dir>>
$ git status # On branch master nothing to commit (working directory clean)
$ git cherry-pick 7d193bb0c1f14908361d9d9d5e30f0c12d5f2c2f
error: Your local changes to the following files would be overwritten by merge:
<<PATH>>
Please, commit your changes or stash them before you can merge.
Aborting
--
Piotrek