summaryrefslogtreecommitdiff
path: root/Annex
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-08-26 17:06:43 -0700
committerGravatar Joey Hess <joey@kitenet.net>2014-08-26 17:10:25 -0700
commitf04fc3ca095f2372c9bb43ef5b884ed112d34eff (patch)
tree71b7b1ea09f7f1d7bf964544c1c04eb7259abf15 /Annex
parent7924eb9422a949bbca80d7abc516eba0d9467f14 (diff)
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
Diffstat (limited to 'Annex')
-rw-r--r--Annex/Content.hs2
-rw-r--r--Annex/Content/Direct.hs2
-rw-r--r--Annex/Direct.hs2
3 files changed, 3 insertions, 3 deletions
diff --git a/Annex/Content.hs b/Annex/Content.hs
index 86b78c04e..6e5131f77 100644
--- a/Annex/Content.hs
+++ b/Annex/Content.hs
@@ -580,7 +580,7 @@ preseedTmp key file = go =<< inAnnex key
( return True
, do
s <- calcRepo $ gitAnnexLocation key
- liftIO $ copyFileExternal s file
+ liftIO $ copyFileExternal CopyTimeStamps s file
)
{- Blocks writing to an annexed file, and modifies file permissions to
diff --git a/Annex/Content/Direct.hs b/Annex/Content/Direct.hs
index b249e0557..d9e1535f3 100644
--- a/Annex/Content/Direct.hs
+++ b/Annex/Content/Direct.hs
@@ -210,7 +210,7 @@ addContentWhenNotPresent key contentfile associatedfile = do
v <- isAnnexLink associatedfile
when (Just key == v) $
replaceFile associatedfile $
- liftIO . void . copyFileExternal contentfile
+ liftIO . void . copyFileExternal CopyAllMetaData contentfile
updateInodeCache key associatedfile
{- Some filesystems get new inodes each time they are mounted.
diff --git a/Annex/Direct.hs b/Annex/Direct.hs
index 7b91cc342..76a6f27dc 100644
--- a/Annex/Direct.hs
+++ b/Annex/Direct.hs
@@ -357,7 +357,7 @@ toDirectGen k f = do
`catchIO` (\_ -> freezeContent loc)
fromdirect loc = do
replaceFile f $
- liftIO . void . copyFileExternal loc
+ liftIO . void . copyFileExternal CopyAllMetaData loc
updateInodeCache k f
{- Removes a direct mode file, while retaining its content in the annex