git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: rebuild repo from data, packfiles?

From
TFtom 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
Previous: Jonathan NiederNext: Jonathan Nieder
Message 3 of 7 in “rebuild repo from data, packfiles?”
  1. tom fogalNov 20, 2010
  2. Jonathan NiederNov 21, 2010
  3. tom fogalNov 21, 2010
  4. Jonathan NiederNov 21, 2010
  5. tom fogalNov 21, 2010
  6. Jonathan NiederNov 21, 2010
  7. tom fogalNov 21, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.