diff options
-rw-r--r-- | Command/Unused.hs | 9 | ||||
-rw-r--r-- | Test.hs | 15 | ||||
-rw-r--r-- | debian/changelog | 3 |
3 files changed, 17 insertions, 10 deletions
diff --git a/Command/Unused.hs b/Command/Unused.hs index 4353bd075..a643cf8e0 100644 --- a/Command/Unused.hs +++ b/Command/Unused.hs @@ -26,6 +26,7 @@ import qualified Git.LsFiles as LsFiles import qualified Git.DiffTree as DiffTree import qualified Remote import qualified Annex.Branch +import Annex.Link import Annex.CatFile import Types.Key import Types.RefSpec @@ -214,8 +215,12 @@ withKeysReferenced' mdir initial a = do Just dir -> inRepo $ LsFiles.inRepo [dir] go v [] = return v go v (f:fs) = do - x <- lookupFile f - case x of + mk <- getM id + [ isAnnexLink f + , liftIO (isPointerFile f) + , catKeyFile f + ] + case mk of Nothing -> go v fs Just k -> do !v' <- a k f v @@ -705,8 +705,8 @@ test_fsck_basic = intmpclonerepo $ do git_annex "get" [f] @? "get of file failed" Utility.FileMode.allowWrite f writeFile f (changedcontent f) - ifM (annexeval Config.isDirect) - ( git_annex "fsck" [] @? "fsck failed in direct mode with changed file content" + ifM (annexeval Config.isDirect <||> unlockedFiles <$> getTestMode) + ( git_annex "fsck" [] @? "fsck failed on unlocked file with changed file content" , not <$> git_annex "fsck" [] @? "fsck failed to fail with corrupted file content" ) git_annex "fsck" [] @? "fsck unexpectedly failed again; previous one did not fix problem with " ++ f @@ -828,7 +828,7 @@ test_unused = intmpclonerepoInDirect $ do checkunused [unusedfilekey] "with renamed link deleted" -- unused used to miss symlinks that were deleted or modified - -- manually, but commited as such. + -- manually writeFile "unusedfile" "unusedcontent" git_annex "add" ["unusedfile"] @? "add of unusedfile failed" boolSystem "git" [Param "add", File "unusedfile"] @? "git add failed" @@ -837,15 +837,14 @@ test_unused = intmpclonerepoInDirect $ do boolSystem "git" [Param "rm", Param "-qf", File "unusedfile"] @? "git rm failed" checkunused [unusedfilekey'] "with staged link deleted" - -- unused used to miss symlinks that were deleted or modified - -- manually, but not staged as such. + -- unused used to false positive on symlinks that were + -- deleted or modified manually, but not staged as such writeFile "unusedfile" "unusedcontent" git_annex "add" ["unusedfile"] @? "add of unusedfile failed" boolSystem "git" [Param "add", File "unusedfile"] @? "git add failed" - unusedfilekey'' <- annexeval $ findkey "unusedfile" - checkunused [] "with unstaged deleted link" + checkunused [] "with staged file" removeFile "unusedfile" - checkunused [unusedfilekey''] "with unstaged link deleted" + checkunused [] "with staged deleted file" where checkunused expectedkeys desc = do diff --git a/debian/changelog b/debian/changelog index cab3bc8d4..e5d968d9b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -40,6 +40,9 @@ git-annex (6.20151219) UNRELEASED; urgency=medium This may break existing parsers of this json output, if there were any. * whereis --json: Make url list be included in machine-parseable form. * test: Added --keep-failures option. + * unused: Bug fix when a new file was added to the annex, and then + removed (but not git rmed). git still has the add staged in this case, + so the content should not be unused and was wrongly treated as such. -- Joey Hess <id@joeyh.name> Sat, 19 Dec 2015 13:31:17 -0400 |