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

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
* Rsync special remotes can be configured with shellescape=no