From 49147d538b142ce2e206cdd9d19d7438bd47e3b3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 20 Feb 2013 13:37:46 -0400 Subject: Direct mode: Fix support for adding a modified file. Adding a file that is already annexed, but has been modified, was broken in direct mode. This fix makes the new content be added. It does have the problem that re-running `git annex add` will checksum and re-add the content repeatedly, until it's committed. This happens because the key associated with the file does not change until the new one gets committed, so it keeps thinking the file has changed. --- Command/Add.hs | 10 +++++++--- debian/changelog | 1 + 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 Sun, 17 Feb 2013 16:42:16 -0400 -- cgit v1.2.3