fix reversion in v5 git-annex add of unlocked file
authorJoey Hess <joeyh@joeyh.name>
Wed, 16 Dec 2015 18:27:12 +0000 (14:27 -0400)
committerJoey Hess <joeyh@joeyh.name>
Wed, 16 Dec 2015 18:27:12 +0000 (14:27 -0400)
In v5, lookupFile is supposed to only look at symlinks on disk (except when
in direct mode).

Note that v6 also has a bug when a locked file's symlink is deleted and is
replaced with a new file. It sees that a link is staged and gets that
key.

Annex/WorkTree.hs

index 26144e7f9e7436bea3ebc28b8754b08dc6639d1f..c824e7fc5947a1915ef7867b1a686bab147d1027 100644 (file)
@@ -10,6 +10,8 @@ module Annex.WorkTree where
 import Common.Annex
 import Annex.Link
 import Annex.CatFile
+import Annex.Version
+import Config
 
 {- Looks up the key corresponding to an annexed file,
  - by examining what the file links to.
@@ -22,7 +24,10 @@ lookupFile file = do
        mkey <- isAnnexLink file
        case mkey of
                Just key -> makeret key
-               Nothing -> maybe (return Nothing) makeret =<< catKeyFile file
+               Nothing -> ifM (versionSupportsUnlockedPointers <||> isDirect)
+                       ( maybe (return Nothing) makeret =<< catKeyFile file
+                       , return Nothing 
+                       )
   where
        makeret = return . Just