diff options
-rw-r--r-- | Command/Add.hs | 7 | ||||
-rw-r--r-- | Git/LsFiles.hs | 8 | ||||
-rw-r--r-- | Seek.hs | 5 |
3 files changed, 18 insertions, 2 deletions
diff --git a/Command/Add.hs b/Command/Add.hs index 33adc8efc..18dc65031 100644 --- a/Command/Add.hs +++ b/Command/Add.hs @@ -31,11 +31,14 @@ import Utility.InodeCache def :: [Command] def = [notBareRepo $ command "add" paramPaths seek "add files to annex"] -{- Add acts on both files not checked into git yet, and unlocked files. -} +{- Add acts on both files not checked into git yet, and unlocked files. + - + - In direct mode, it acts on any files that have changed. -} seek :: [CommandSeek] seek = [ withFilesNotInGit start - , withFilesUnlocked start + , whenNotDirect $ withFilesUnlocked start + , whenDirect $ withFilesMaybeModified start ] {- The add subcommand annexes a file, generating a key for it using a diff --git a/Git/LsFiles.hs b/Git/LsFiles.hs index 401ed5562..ca08fe261 100644 --- a/Git/LsFiles.hs +++ b/Git/LsFiles.hs @@ -9,6 +9,7 @@ module Git.LsFiles ( inRepo, notInRepo, deleted, + modified, staged, stagedNotDeleted, stagedDetails, @@ -46,6 +47,13 @@ deleted l repo = pipeNullSplit params repo where params = [Params "ls-files --deleted -z --"] ++ map File l +{- Returns a list of files in the specified locations that have been + - modified. -} +modified :: [FilePath] -> Repo -> IO ([FilePath], IO Bool) +modified l repo = pipeNullSplit params repo + where + params = [Params "ls-files --modified -z --"] ++ map File l + {- Returns a list of all files that are staged for commit. -} staged :: [FilePath] -> Repo -> IO ([FilePath], IO Bool) staged = staged' [] @@ -88,6 +88,11 @@ withFilesUnlocked' typechanged a params = do let unlockedfiles = liftIO $ filterM notSymlink typechangedfiles prepFiltered a unlockedfiles +{- Finds files that may be modified. -} +withFilesMaybeModified :: (FilePath -> CommandStart) -> CommandSeek +withFilesMaybeModified a params = + prepFiltered a $ seekHelper LsFiles.modified params + withKeys :: (Key -> CommandStart) -> CommandSeek withKeys a params = return $ map (a . parse) params where |