diff options
author | Joey Hess <joey@kitenet.net> | 2013-10-19 11:54:08 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-10-19 11:54:08 -0400 |
commit | 43ee6974ede750ca0ddaa79e61ee4c19f967e77a (patch) | |
tree | bbc9daf6c114c9fe03dd588ba479b0dbc4029627 | |
parent | 2cc98c19fcb930cf5008495c23f62cc7d6c2f1a1 (diff) |
update
-rw-r--r-- | doc/design/assistant/disaster_recovery.mdwn | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/doc/design/assistant/disaster_recovery.mdwn b/doc/design/assistant/disaster_recovery.mdwn index 67054273e..ccc6a5e6e 100644 --- a/doc/design/assistant/disaster_recovery.mdwn +++ b/doc/design/assistant/disaster_recovery.mdwn @@ -99,14 +99,14 @@ and inject them back into .git/objects to recover: packs it can handle (which may include parts of corrupt packs) back to loose objects. And delete all packs. 2. Delete all loose corrupt objects. -3. Make a new (bare) clone from the remote. Use `--reference` pointing - at the broken repository, to avoid re-downloading objects that - are present in it. (git does not seem to provide an easy way to just - fetch specific missing objects from a remote; `git fetch-pack` only - operates on refs... but this clone method should be pretty efficient) -4. Unpack any packs in the clone, so we can operate on loose objects. -5. Copy each missing object from the new clone's .git/objects to the - repository. +3. Make a new (bare) clone from the remote. + (Note: git does not seem to provide a way to fetch specific missing + objects from the remote. Also, cannot use `--reference` against + a repository with missing refs. So this seems unavoidably + network-expensive.) +5. Use git-cat-file in raw mode on the clone to dump each missing object, + and feed it into git-hash-object in the corrupt repo. (This avoids + needing to unpack packs in the clone.) 6. If each bad object was able to be repaired this way, we're done! (If not, can reuse the clone for getting objects from the next remote.) |