summaryrefslogtreecommitdiff
path: root/Command/Sync.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-06-02 13:50:05 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-06-02 13:50:43 -0400
commit60e30564338ebd9b18b5e229a9050478e5b8c423 (patch)
tree29f6aeecaea4ec7301951636b62b12980a816306 /Command/Sync.hs
parenta19c55d87ae35f4b65d3a4668c2dca1cf6f875df (diff)
sync --content: Fix bug that caused transfers of files to be made to a git remote that does not have a UUID. This particularly impacted clones from gcrypt repositories.
Added guard in Annex.Transfer to prevent this problem at a deeper level. I'm unhappy ith NoUUID, but having Maybe UUID instead wouldn't help either if nothing checked that there was a UUID. Since there legitimately need to be Remotes that do not have a UUID, I can't see a way to fix it at the type level, short making there be two separate types of Remotes.
Diffstat (limited to 'Command/Sync.hs')
-rw-r--r--Command/Sync.hs3
1 files changed, 2 insertions, 1 deletions
diff --git a/Command/Sync.hs b/Command/Sync.hs
index 1169b95c8..c003aa41d 100644
--- a/Command/Sync.hs
+++ b/Command/Sync.hs
@@ -106,7 +106,8 @@ seek o = allowConcurrentOutput $ do
remotes <- syncRemotes (syncWith o)
let gitremotes = filter Remote.gitSyncableRemote remotes
- let dataremotes = filter (not . remoteAnnexIgnore . Remote.gitconfig) remotes
+ let dataremotes = filter (\r -> Remote.uuid r /= NoUUID) $
+ filter (not . remoteAnnexIgnore . Remote.gitconfig) remotes
-- Syncing involves many actions, any of which can independently
-- fail, without preventing the others from running.