Re: rebuild repo from data, packfiles?
- From
- tom fogal <tfogal@sci.utah.edu>
- Date
- Nov 21, 2010, 02:44 UTC
- Message-ID
- <auto-000024045093@sci.utah.edu>
- In-Reply-To
- <20101121001643.GB27666@burratino>
Hi John, thanks for the help.
Jonathan Nieder <jrnieder@gmail.com> writes:
Show 5 quoted lines
> tom fogal wrote: > > > Long story short, I lost some metadata in a repo I've got. > > However, my entire .git/objects/ && subdirs is intact, so I'm > > hopeful my data's still accessible in some form.
Turns out I'm dumber than I thought =(. I had a lot of trouble with trees seemingly becoming invalid after a bit... my shell history's got an rm -r and deleted a lone packfile before I thought "what the hell am I doing?!" and stopped, so that must be it.
> Here's what I'd suggest.
[snip]
The repository-layout info and the lost-found option to fsck were both new to me, and quite useful. Thanks!
Where I'm at now: through lost-found, mucking with metadata enough that git-log and format-patch work, and re-creating a repo to apply patches onto, I've got a lot of my work back. There's a 3 or 4 week gap though, and of course git has trouble dealing with that; some of my "patches" actually add entire files and the like.
If I git cat-file -p all of the `commit' and `blob' sha1's in .git/objects, it looks to me like all my code is there, I just need to get it out somehow.
My thought is to cat-file all my commits, filter out the ones which are upstream, order them by date, and git-am them back into a repo.
Some of my data only exist in blobs, though... maybe git-diff-tree can get me the patch I need? Not quite sure what to diff it with, though... maybe the most-recent sha1 I have, based on date?
Other ideas would certainly be welcome!
-tom