diff options
author | Joey Hess <joey@kitenet.net> | 2013-10-21 17:44:05 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-10-21 17:44:05 -0400 |
commit | 9126581d1835001ff8b44766539f9009ab7ae934 (patch) | |
tree | 98ed4d102d12faaadb9cfbede28c36debc6635af /doc/devblog | |
parent | 6f0d655bc376a7ab02cd05840b7cacab8f707351 (diff) |
devblog
Diffstat (limited to 'doc/devblog')
-rw-r--r-- | doc/devblog/day_40__another_fine_mess.mdwn | 15 |
1 files changed, 15 insertions, 0 deletions
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. |