metadata: When setting metadata, do not recurse into directories by default, since that can be surprising behavior and difficult to recover from. The old behavior is available by using --force.

This commit is contained in:
Joey Hess 2015-02-10 16:06:53 -04:00
parent 36f7e5cfdf
commit f153079152
4 changed files with 30 additions and 1 deletions

View file

@ -32,6 +32,27 @@ withFilesInGit :: (FilePath -> CommandStart) -> CommandSeek
withFilesInGit a params = seekActions $ prepFiltered a $
seekHelper LsFiles.inRepo params
withFilesInGitNonRecursive :: (FilePath -> CommandStart) -> CommandSeek
withFilesInGitNonRecursive a params = ifM (Annex.getState Annex.force)
( withFilesInGit a params
, if null params
then needforce
else seekActions $ prepFiltered a (getfiles [] params)
)
where
getfiles c [] = return (reverse c)
getfiles c (p:ps) = do
(fs, cleanup) <- inRepo $ LsFiles.inRepo [p]
case fs of
[f] -> do
void $ liftIO $ cleanup
getfiles (f:c) ps
[] -> do
void $ liftIO $ cleanup
getfiles c ps
_ -> needforce
needforce = error "Not recursively setting metadata. Use --force to do that."
withFilesNotInGit :: Bool -> (FilePath -> CommandStart) -> CommandSeek
withFilesNotInGit skipdotfiles a params
| skipdotfiles = do