make adding modified files work on crippled filesystems

This commit is contained in:
Joey Hess 2013-02-20 14:12:55 -04:00
parent c2b8db3e69
commit 52902c0945
3 changed files with 18 additions and 2 deletions

View file

@ -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

View file

@ -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' []

View file

@ -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