diff options
author | Joey Hess <joey@kitenet.net> | 2014-01-14 17:10:30 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-01-14 17:10:30 -0400 |
commit | 985e3aebbef10d3bf2a0d9625747a19a793aecd1 (patch) | |
tree | 2cc475421a3342f41e5712656bef979750e8ad7b | |
parent | c340ae26370b4b3eca5433fd2462836abce19533 (diff) |
assistant: Detect if .git/annex/index is corrupt at startup, and recover.
-rw-r--r-- | Assistant/Threads/SanityChecker.hs | 7 | ||||
-rw-r--r-- | debian/changelog | 2 | ||||
-rw-r--r-- | doc/bugs/index_file_smaller_than_expected.mdwn | 3 |
3 files changed, 12 insertions, 0 deletions
diff --git a/Assistant/Threads/SanityChecker.hs b/Assistant/Threads/SanityChecker.hs index 446ade54f..8aa691cdc 100644 --- a/Assistant/Threads/SanityChecker.hs +++ b/Assistant/Threads/SanityChecker.hs @@ -16,6 +16,7 @@ import Assistant.DaemonStatus import Assistant.Alert import Assistant.Repair import Assistant.Ssh +import qualified Annex.Branch import qualified Git.LsFiles import qualified Git.Command import qualified Git.Config @@ -53,6 +54,12 @@ sanityCheckerStartupThread startupdelay = namedThreadUnchecked "SanityCheckerSta debug ["no index file; restaging"] modifyDaemonStatus_ $ \s -> s { forceRestage = True } ) + {- If the git-annex index file is corrupt, it's ok to remove it; + - the data from the git-annex branch will be used, and the index + - will be automatically regenerated. -} + unlessM (liftAnnex $ Annex.Branch.withIndex $ inRepo $ Git.Repair.checkIndexFast) $ do + notice ["corrupt annex/index file found at startup; removing"] + liftAnnex $ liftIO . nukeFile =<< fromRepo gitAnnexIndex {- Fix up ssh remotes set up by past versions of the assistant. -} liftIO $ fixUpSshRemotes diff --git a/debian/changelog b/debian/changelog index f1d76b781..8a9f57be3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,8 @@ git-annex (5.20140108) UNRELEASED; urgency=medium environment. This typically resulted in git-annex branch log files being committed to the master branch and later showing up in the work tree. (These log files can be safely removed.) + * assistant: Detect if .git/annex/index is corrupt at startup, and + recover. -- Joey Hess <joeyh@debian.org> Wed, 08 Jan 2014 13:13:54 -0400 diff --git a/doc/bugs/index_file_smaller_than_expected.mdwn b/doc/bugs/index_file_smaller_than_expected.mdwn index b82bd62b3..0eac3f20e 100644 --- a/doc/bugs/index_file_smaller_than_expected.mdwn +++ b/doc/bugs/index_file_smaller_than_expected.mdwn @@ -48,3 +48,6 @@ NetWatcherFallback crashed: user error (git ["--git-dir=/Users/juh/Share/.git"," # End of transcript or log. """]] + +> Made assistant detect corrupted .git/annex/index on startup and correct +> it. [[fixed|done]] --[[Joey]] |