Do not preserve permissions and acls when copying files from one local git repository to another. Timestamps are still preserved as long as cp --preserve=timestamps is supported.
This avoids cp -a overriding the default mode acls that the user might have set in a git repository. With GNU cp, this behavior change should not be a breaking change, because git-anex also uses rsync sometimes in the same situation, and has only ever preserved timestamps when using rsync. Systems without GNU cp will no longer use cp -a, but instead just cp. So, timestamps will no longer be preserved. Preserving timestamps when copying between repos is not guaranteed anyway. Closes: #729757
This commit is contained in:
parent
06b51f67ac
commit
6eb5c3f479
11 changed files with 28 additions and 16 deletions
|
@ -90,7 +90,7 @@ start mode (srcfile, destfile) =
|
|||
handleexisting =<< liftIO (catchMaybeIO $ getSymbolicLinkStatus destfile)
|
||||
liftIO $ createDirectoryIfMissing True (parentDir destfile)
|
||||
liftIO $ if mode == Duplicate || mode == SkipDuplicates
|
||||
then void $ copyFileExternal srcfile destfile
|
||||
then void $ copyFileExternal CopyAllMetaData srcfile destfile
|
||||
else moveFile srcfile destfile
|
||||
Command.Add.perform destfile
|
||||
handleexisting Nothing = noop
|
||||
|
|
|
@ -136,7 +136,7 @@ test st r k =
|
|||
, check "retrieveKeyFile resume from end" $ do
|
||||
loc <- Annex.calcRepo (gitAnnexLocation k)
|
||||
tmp <- prepTmp k
|
||||
void $ liftIO $ copyFileExternal loc tmp
|
||||
void $ liftIO $ copyFileExternal CopyAllMetaData loc tmp
|
||||
lockContent k removeAnnex
|
||||
get
|
||||
, check "fsck downloaded object" fsck
|
||||
|
|
|
@ -89,7 +89,7 @@ cleanupIndirect file key = do
|
|||
)
|
||||
where
|
||||
copyfrom src =
|
||||
thawContent file `after` liftIO (copyFileExternal src file)
|
||||
thawContent file `after` liftIO (copyFileExternal CopyAllMetaData src file)
|
||||
hardlinkfrom src =
|
||||
#ifndef mingw32_HOST_OS
|
||||
-- creating a hard link could fall; fall back to copying
|
||||
|
|
|
@ -46,7 +46,7 @@ perform dest key = do
|
|||
tmpdest <- fromRepo $ gitAnnexTmpObjectLocation key
|
||||
liftIO $ createDirectoryIfMissing True (parentDir tmpdest)
|
||||
showAction "copying"
|
||||
ifM (liftIO $ copyFileExternal src tmpdest)
|
||||
ifM (liftIO $ copyFileExternal CopyAllMetaData src tmpdest)
|
||||
( do
|
||||
liftIO $ do
|
||||
removeFile dest
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue