summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-03-14 13:13:56 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-03-14 13:14:01 -0400
commit589d8a9207aaf72e3562ca8ff7cf339d8dd97fa8 (patch)
tree489ba242f823a954e1dbfc3221c79b0a76e3bc12
parentaeee4a4b7093358d4cc664146e61329bfd67956b (diff)
Correct git-annex info to include unlocked files in v6 repository.
An unlocked present file does not have a pointer file in the worktree, so info skipped counting it. It may be that unused was also affected by the problem, but it seemed not to be in my tests. I think because of the use of the associatedFilesFilter. This fix slows down both info and unused a little bit, since they have to query the contents of files from git, but only when handling unlocked files.
-rw-r--r--Annex/Link.hs4
-rw-r--r--Command/Unused.hs6
-rw-r--r--debian/changelog1
3 files changed, 6 insertions, 5 deletions
diff --git a/Annex/Link.hs b/Annex/Link.hs
index 40e56f23e..629e77d7f 100644
--- a/Annex/Link.hs
+++ b/Annex/Link.hs
@@ -159,7 +159,9 @@ formatPointer :: Key -> String
formatPointer k =
toInternalGitPath (pathSeparator:objectDir </> keyFile k) ++ "\n"
-{- Checks if a file is a pointer to a key. -}
+{- Checks if a worktree file is a pointer to a key.
+ -
+ - Unlocked files whose content is present are not detected by this. -}
isPointerFile :: FilePath -> IO (Maybe Key)
isPointerFile f = catchDefaultIO Nothing $ do
b <- L.take maxPointerSz <$> L.readFile f
diff --git a/Command/Unused.hs b/Command/Unused.hs
index b6f3e93b6..8040dc21a 100644
--- a/Command/Unused.hs
+++ b/Command/Unused.hs
@@ -27,6 +27,7 @@ import qualified Remote
import qualified Annex.Branch
import Annex.Link
import Annex.CatFile
+import Annex.WorkTree
import Types.RefSpec
import Git.Types
import Git.Sha
@@ -215,10 +216,7 @@ withKeysReferenced' mdir initial a = do
Just dir -> inRepo $ LsFiles.inRepo [dir]
go v [] = return v
go v (f:fs) = do
- mk <- getM id
- [ isAnnexLink f
- , liftIO (isPointerFile f)
- ]
+ mk <- lookupFile f
case mk of
Nothing -> go v fs
Just k -> do
diff --git a/debian/changelog b/debian/changelog
index fc01dbdaf..e2c13be40 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -12,6 +12,7 @@ git-annex (6.20160230) UNRELEASED; urgency=medium
* Fix OSX dmg to include libraries needed by bundled gpg,
lost in last release.
* Always try to thaw content, even when annex.crippledfilesystem is set.
+ * Correct git-annex info to include unlocked files in v6 repository.
-- Joey Hess <id@joeyh.name> Mon, 29 Feb 2016 13:00:30 -0400