Only use cp -a if it is supported, falling back to cp -p or plain cp.
* cp --reflink=auto is used if supported, and will make git annex unlock much faster on filesystems like btrfs that support copy of write.
This commit is contained in:
parent
54513c69ba
commit
161823d6ea
7 changed files with 48 additions and 18 deletions
24
CopyFile.hs
Normal file
24
CopyFile.hs
Normal file
|
@ -0,0 +1,24 @@
|
|||
{- git-annex file copying
|
||||
-
|
||||
- Copyright 2010 Joey Hess <joey@kitenet.net>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
||||
module CopyFile (copyFile) where
|
||||
|
||||
import Utility
|
||||
import qualified SysConfig
|
||||
|
||||
{- The cp command is used, because I hate reinventing the wheel,
|
||||
- and because this allows easy access to features like cp --reflink. -}
|
||||
copyFile :: FilePath -> FilePath -> IO Bool
|
||||
copyFile src dest = boolSystem "cp" opts
|
||||
where
|
||||
opts = if (SysConfig.cp_reflink_auto)
|
||||
then ["--reflink=auto", src, dest]
|
||||
else if (SysConfig.cp_a)
|
||||
then ["-a", src, dest]
|
||||
else if (SysConfig.cp_p)
|
||||
then ["-p", src, dest]
|
||||
else [src, dest]
|
Loading…
Add table
Add a link
Reference in a new issue