summaryrefslogtreecommitdiff
path: root/Assistant/Threads/Merger.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-06-25 20:16:30 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-06-25 20:16:30 -0400
commit05c4dfb9411e54c21aa4c0d49e3662117ac2f549 (patch)
tree91d37a10387066185250c99c93fba85d753f5e72 /Assistant/Threads/Merger.hs
parent14015036bce2d6a4cf57775ccfc5310f0ec96082 (diff)
fixup merges now done when needed
Diffstat (limited to 'Assistant/Threads/Merger.hs')
-rw-r--r--Assistant/Threads/Merger.hs8
1 files changed, 8 insertions, 0 deletions
diff --git a/Assistant/Threads/Merger.hs b/Assistant/Threads/Merger.hs
index d2c8b9b76..77bf9f416 100644
--- a/Assistant/Threads/Merger.hs
+++ b/Assistant/Threads/Merger.hs
@@ -70,3 +70,11 @@ onAdd g file _
mergeBranch :: Git.Ref -> Git.Repo -> IO Bool
mergeBranch = Git.Merge.mergeNonInteractive . Command.Sync.syncBranch
+
+{- Manually pull from remotes and merge their branches. Called by the pusher
+ - when a push fails, which can happen due to a remote not having pushed
+ - changes to us. That could be because it doesn't have us as a remote, or
+ - because the assistant is not running there, or other reasons. -}
+manualPull :: Git.Ref -> [Remote] -> Annex ()
+manualPull currentbranch remotes = forM_ remotes $ \r ->
+ Command.Sync.mergeRemote r currentbranch