summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2013-11-21 20:26:02 -0400
committerJoey Hess <joey@kitenet.net>2013-11-21 20:26:02 -0400
commit6cb3d15ee745bf0365b142e324585bbe1ea37d01 (patch)
treead94abedc5b142f4b1a711d418941e91cd2657d8
parent3cab695e89afa40bba04e5b0e2de45bda1501e6c (diff)
downloadgit-repair-6cb3d15ee745bf0365b142e324585bbe1ea37d01.tar.gz
try turning on write bit on loose objects
Avoid deleting them if that's the only problem.
-rw-r--r--Git/Repair.hs1
1 files changed, 1 insertions, 0 deletions
diff --git a/Git/Repair.hs b/Git/Repair.hs
index dafdd3f..f1e6818 100644
--- a/Git/Repair.hs
+++ b/Git/Repair.hs
@@ -50,6 +50,7 @@ cleanCorruptObjects :: FsckResults -> Repo -> IO (Maybe MissingObjects)
cleanCorruptObjects fsckresults r = do
void $ explodePacks r
objs <- listLooseObjectShas r
+ mapM_ (tryIO . allowRead . looseObjectFile r) objs
bad <- findMissing objs r
void $ removeLoose r $ S.union bad (fromMaybe S.empty fsckresults)
-- Rather than returning the loose objects that were removed, re-run