diff mercurial/changegroup.py @ 23890:7817059917d0

pullbundle2: extract addchangegroup result combining into its own function This will also be used for 'hg unbundle'
author Eric Sumner <ericsumner@fb.com>
date Fri, 16 Jan 2015 12:53:45 -0800
parents 4ab66de46a96
children cda18ded2c48
line wrap: on
line diff
--- a/mercurial/changegroup.py	Fri Jan 16 15:31:45 2015 -0500
+++ b/mercurial/changegroup.py	Fri Jan 16 12:53:45 2015 -0800
@@ -42,6 +42,25 @@
     """return a changegroup chunk header (string) for a zero-length chunk"""
     return struct.pack(">l", 0)
 
+def combineresults(results):
+    """logic to combine 0 or more addchangegroup results into one"""
+    changedheads = 0
+    result = 1
+    for ret in results:
+        # If any changegroup result is 0, return 0
+        if ret == 0:
+            result = 0
+            break
+        if ret < -1:
+            changedheads += ret + 1
+        elif ret > 1:
+            changedheads += ret - 1
+    if changedheads > 0:
+        result = 1 + changedheads
+    elif changedheads < 0:
+        result = -1 + changedheads
+    return result
+
 class nocompress(object):
     def compress(self, x):
         return x