From ae73f85e186a196e341cbc7820f1d47cc0f5700c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 13 Nov 2013 14:39:26 -0400 Subject: better handling of missing index file --- Git/Repair.hs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'Git') diff --git a/Git/Repair.hs b/Git/Repair.hs index 85fcc6680..4265f8796 100644 --- a/Git/Repair.hs +++ b/Git/Repair.hs @@ -13,6 +13,7 @@ module Git.Repair ( resetLocalBranches, removeTrackingBranches, checkIndex, + missingIndex, nukeIndex, emptyGoodCommits, ) where @@ -369,18 +370,19 @@ verifyTree missing treesha r else cleanup {- Checks that the index file only refers to objects that are not missing, - - and is not itself corrupt or missing. -} + - and is not itself corrupt. Note that a missing index file is not + - considered a problem (repo may be new). -} checkIndex :: MissingObjects -> Repo -> IO Bool -checkIndex missing r = ifM (doesFileExist (localGitDir r "index")) - ( do - (bad, _good, cleanup) <- partitionIndex missing r - if null bad - then cleanup - else do - void cleanup - return False - , return False - ) +checkIndex missing r = do + (bad, _good, cleanup) <- partitionIndex missing r + if null bad + then cleanup + else do + void cleanup + return False + +missingIndex :: Repo -> IO Bool +missingIndex r = not <$> doesFileExist (localGitDir r "index") partitionIndex :: MissingObjects -> Repo -> IO ([LsFiles.StagedDetails], [LsFiles.StagedDetails], IO Bool) partitionIndex missing r = do -- cgit v1.2.3