From 9126581d1835001ff8b44766539f9009ab7ae934 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 21 Oct 2013 17:44:05 -0400 Subject: devblog --- doc/devblog/day_40__another_fine_mess.mdwn | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 doc/devblog/day_40__another_fine_mess.mdwn diff --git a/doc/devblog/day_40__another_fine_mess.mdwn b/doc/devblog/day_40__another_fine_mess.mdwn new file mode 100644 index 000000000..dfe5bc564 --- /dev/null +++ b/doc/devblog/day_40__another_fine_mess.mdwn @@ -0,0 +1,15 @@ +Solid day of working on repository recovery. Got `git recover-repository +--force` working, which involves fixing up branches that refer to missing +objects. Mostly straightforward traversal of git commits, trees, blobs, to +find when a branch has a problem, and identify an old version of it that +predates the missing object. (Can also find them in the reflog.) + +The main complication turned out to be that `git branch -D` and `git +show-ref` don't behave very well when the commit objects pointed to by refs +are themselves missing. And git has no low-level plumbing that avoids +falling over these problems, so I had to write it myself. + +Testing has turned up one unexpected problem: Git's index can itself refer +to missing objects, and that will break future commits, etc. So I need to +find a way to validate the index, and when it's got problems, +either throw it out, or possibly recover some of the staged data from it. -- cgit v1.2.3