Pass -a to cp even when it supports --reflink=auto, to preserve permissions.

Amoung other things, this makes unlocking a WORM backed file and then
re-adding it without making any changes not add a new object, as the
timestamp is preserved.
This commit is contained in:
Joey Hess 2012-05-15 14:18:51 -04:00
parent 300d3cbdef
commit e36808e167
2 changed files with 14 additions and 7 deletions

View file

@ -1,6 +1,6 @@
{- git-annex file copying {- git-annex file copying
- -
- Copyright 2010 Joey Hess <joey@kitenet.net> - Copyright 2010,2012 Joey Hess <joey@kitenet.net>
- -
- Licensed under the GNU GPL version 3 or higher. - Licensed under the GNU GPL version 3 or higher.
-} -}
@ -16,10 +16,10 @@ copyFileExternal :: FilePath -> FilePath -> IO Bool
copyFileExternal src dest = do copyFileExternal src dest = do
whenM (doesFileExist dest) $ whenM (doesFileExist dest) $
removeFile dest removeFile dest
boolSystem "cp" [params, File src, File dest] boolSystem "cp" $ params ++ [File src, File dest]
where where
params params = map snd $ filter fst
| SysConfig.cp_reflink_auto = Params "--reflink=auto" [ (SysConfig.cp_reflink_auto, Param "--reflink=auto")
| SysConfig.cp_a = Params "-a" , (SysConfig.cp_a, Param "-a")
| SysConfig.cp_p = Params "-p" , (SysConfig.cp_p && not SysConfig.cp_a, Param "-p")
| otherwise = Params "" ]

7
debian/changelog vendored
View file

@ -1,3 +1,10 @@
git-annex (3.20120512) UNRELEASED; urgency=low
* Pass -a to cp even when it supports --reflink=auto, to preserve
permissions.
-- Joey Hess <joeyh@debian.org> Tue, 15 May 2012 14:17:49 -0400
git-annex (3.20120511) unstable; urgency=low git-annex (3.20120511) unstable; urgency=low
* Rsync special remotes can be configured with shellescape=no * Rsync special remotes can be configured with shellescape=no