summaryrefslogtreecommitdiff
path: root/Command/Sync.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-02-02 22:46:55 -0400
committerGravatar Joey Hess <joey@kitenet.net>2014-02-02 22:48:45 -0400
commit6dbf044223969e37b5b4aa495f4ffa86b51d7596 (patch)
tree6c6e1ee1265f7ac6da4918c063598a53aa82902d /Command/Sync.hs
parent2fdc2e9d5569f41281b5458c7a6efe767dc81864 (diff)
sync --content: Drop files from remotes that don't have them after getting them.
Need to include the uuid of the local repo in the list of belived locations of a key after getting it, in order for the drop from remote to include it in the numcopies calculation.
Diffstat (limited to 'Command/Sync.hs')
-rw-r--r--Command/Sync.hs8
1 files changed, 6 insertions, 2 deletions
diff --git a/Command/Sync.hs b/Command/Sync.hs
index 0507fd680..c9493b2a4 100644
--- a/Command/Sync.hs
+++ b/Command/Sync.hs
@@ -37,6 +37,7 @@ import Command.Get (getKeyFile')
import qualified Command.Move
import Logs.Location
import Annex.Drop
+import Annex.UUID
import qualified Data.Set as S
import Data.Hash.MD5
@@ -526,12 +527,15 @@ syncFile rs f (k, _) = do
locs <- loggedLocations k
let (have, lack) = partition (\r -> Remote.uuid r `elem` locs) rs
- sequence_ =<< handleget have
+ got <- anyM id =<< handleget have
putrs <- catMaybes . snd . unzip <$> (sequence =<< handleput lack)
+ u <- getUUID
+ let locs' = concat [if got then [u] else [], putrs, locs]
+
-- Using callCommandAction rather than commandAction for drops,
-- because a failure to drop does not mean the sync failed.
- handleDropsFrom (putrs ++ locs) rs "unwanted" True k (Just f)
+ handleDropsFrom locs' rs "unwanted" True k (Just f)
Nothing callCommandAction
where
wantget have = allM id