summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Command/Add.hs10
-rw-r--r--debian/changelog1
2 files changed, 8 insertions, 3 deletions
diff --git a/Command/Add.hs b/Command/Add.hs
index 7ebf979cd..33adc8efc 100644
--- a/Command/Add.hs
+++ b/Command/Add.hs
@@ -35,14 +35,14 @@ def = [notBareRepo $ command "add" paramPaths seek "add files to annex"]
seek :: [CommandSeek]
seek =
[ withFilesNotInGit start
- , whenNotDirect $ withFilesUnlocked start
+ , withFilesUnlocked start
]
{- The add subcommand annexes a file, generating a key for it using a
- backend, and then moving it into the annex directory and setting up
- the symlink pointing to its content. -}
start :: FilePath -> CommandStart
-start file = ifAnnexed file fixup add
+start file = ifAnnexed file addpresent add
where
add = do
s <- liftIO $ getSymbolicLinkStatus file
@@ -51,7 +51,11 @@ start file = ifAnnexed file fixup add
else do
showStart "add" file
next $ perform file
- fixup (key, _) = do
+ addpresent (key, _) = ifM isDirect
+ ( ifM (goodContent key file) ( stop , add )
+ , fixup key
+ )
+ fixup key = do
-- fixup from an interrupted add; the symlink
-- is present but not yet added to git
showStart "add" file
diff --git a/debian/changelog b/debian/changelog
index b4bc100f5..e4cdc4d98 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -10,6 +10,7 @@ git-annex (3.20130217) UNRELEASED; urgency=low
* Android: Support ssh connection caching.
* Direct mode: Support filesystems like FAT which can change their inodes
each time they are mounted.
+ * Direct mode: Fix support for adding a modified file.
-- Joey Hess <joeyh@debian.org> Sun, 17 Feb 2013 16:42:16 -0400