fix behavior of copy --from --to
authorJoey Hess <joeyh@joeyh.name>
Mon, 23 Jan 2023 21:53:57 +0000 (17:53 -0400)
committerJoey Hess <joeyh@joeyh.name>
Mon, 23 Jan 2023 21:55:16 +0000 (17:55 -0400)
Sponsored-by: Dartmouth College's DANDI project
Command/Move.hs
doc/git-annex-copy.mdwn

index b105306bf2ac3b14939dbd4de841cd977c1a809b..0f66948379f03bfa66407bf58e1417674d6a9e1f 100644 (file)
@@ -432,9 +432,10 @@ fromToPerform src dest removewhen key afile = do
 
        todest mcontentlock removewhen' = toPerform' mcontentlock dest removewhen' key afile False
 
-       dropfromsrc adjusttocheck = 
-               logMove (Remote.uuid src) (Remote.uuid dest) True key $ \deststartedwithcopy ->
+       dropfromsrc adjusttocheck = case removewhen of
+               RemoveSafe -> logMove (Remote.uuid src) (Remote.uuid dest) True key $ \deststartedwithcopy ->
                        fromDrop src (Remote.uuid dest) deststartedwithcopy key afile adjusttocheck
+               RemoveNever -> next (return True)
 
        combinecleanups a b = a >>= \case
                Just cleanupa -> b True >>= \case
index 03563bda11415249a9247a952386d4a8c3e98721..acf3b2a32d3629c3c7af10c510af232761d3a545 100644 (file)
@@ -34,10 +34,12 @@ Paths of files or directories to operate on can be specified.
 
 * `--from=remote1 --to=remote2`
 
-  Copy the content of files that are in remote1 to remote2. Does not change
-  what is stored in the local repository.
+  Copy the content of files that are in remote1 to remote2.
 
-  Note: This may need to store an intermediate copy of the content on disk.
+  This is implemented by first downloading the content from remote1 to the
+  local repository (if not already present), then sending it to remote2, and
+  then deleting the content from the local repository (if it was not present
+  to start with).
 
 * `--jobs=N` `-JN`