bundle: move combineresults() from changegroup to bundle2
The results only need to be combined if they come from a bundle2. More
importantly, we'll change its argument to a bundleoperation soon, and
then it definitely will no longer belong in changegroup.py.
--- a/mercurial/bundle2.py Wed Jun 21 14:42:04 2017 -0700
+++ b/mercurial/bundle2.py Thu Jun 22 13:58:20 2017 -0700
@@ -1478,6 +1478,25 @@
# in case of sshrepo because we don't know the end of the stream
return changegroup.writechunks(ui, chunkiter, filename, vfs=vfs)
+def combinechangegroupresults(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
+
@parthandler('changegroup', ('version', 'nbchanges', 'treemanifest'))
def handlechangegroup(op, inpart):
"""apply a changegroup part on the repo
--- a/mercurial/changegroup.py Wed Jun 21 14:42:04 2017 -0700
+++ b/mercurial/changegroup.py Thu Jun 22 13:58:20 2017 -0700
@@ -60,25 +60,6 @@
"""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
-
def writechunks(ui, chunks, filename, vfs=None):
"""Write chunks to a file and return its filename.
--- a/mercurial/commands.py Wed Jun 21 14:42:04 2017 -0700
+++ b/mercurial/commands.py Thu Jun 22 13:58:20 2017 -0700
@@ -5216,7 +5216,7 @@
"information"))
changes = [r.get('return', 0)
for r in op.records['changegroup']]
- modheads = changegroup.combineresults(changes)
+ modheads = bundle2.combinechangegroupresults(changes)
else:
txnname = 'unbundle\n%s' % util.hidepassword(url)
with repo.transaction(txnname) as tr:
--- a/mercurial/exchange.py Wed Jun 21 14:42:04 2017 -0700
+++ b/mercurial/exchange.py Thu Jun 22 13:58:20 2017 -0700
@@ -1398,7 +1398,7 @@
if pullop.fetch:
results = [cg['return'] for cg in op.records['changegroup']]
- pullop.cgresult = changegroup.combineresults(results)
+ pullop.cgresult = bundle2.combinechangegroupresults(results)
# processing phases change
for namespace, value in op.records['listkeys']: