Patchwork [6,of,6] changegroup: expose list of changesets from getchangegroup

login
register
mail settings
Submitter Gregory Szorc
Date May 26, 2015, 12:42 a.m.
Message ID <419579a1fc7ca79c4986.1432600959@vm-ubuntu-main.gateway.sonic.net>
Download mbox | patch
Permalink /patch/9270/
State Changes Requested
Delegated to: Pierre-Yves David
Headers show

Comments

Gregory Szorc - May 26, 2015, 12:42 a.m.
# HG changeset patch
# User Gregory Szorc <gregory.szorc@gmail.com>
# Date 1432592621 25200
#      Mon May 25 15:23:41 2015 -0700
# Node ID 419579a1fc7ca79c4986b500d7f05ee3a84c0cd5
# Parent  eec32b6c4b3c3b45250f78918eb3cfde17be7da5
changegroup: expose list of changesets from getchangegroup

This isn't required for the end goal of this series, but it does
establish API parity between the raw and non-raw functions.

Patch

diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -672,11 +672,14 @@  def getchangegroup(repo, source, heads=N
     If heads is None, use the local heads. If common is None, use [nullid].
 
     The nodes in common might not all be known locally due to the way the
     current discovery protocol works.
+
+    Returns a list of binary changeset nodes and an iterator over raw
+    changegroup data.
     """
     outgoing = _computeoutgoing(repo, heads, common)
-    return getlocalchangegroup(repo, source, outgoing, bundlecaps=bundlecaps)[1]
+    return getlocalchangegroup(repo, source, outgoing, bundlecaps=bundlecaps)
 
 def changegroup(repo, basenodes, source):
     # to avoid a race we use changegroupsubset() (issue1320)
     return changegroupsubset(repo, basenodes, repo.heads(), source)
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1235,9 +1235,10 @@  def bundle(ui, repo, fname, dest=None, *
                                "a destination"))
         common = [repo.lookup(rev) for rev in base]
         heads = revs and map(repo.lookup, revs) or revs
         cg = changegroup.getchangegroup(repo, 'bundle', heads=heads,
-                                         common=common, bundlecaps=bundlecaps)
+                                        common=common,
+                                        bundlecaps=bundlecaps)[1]
         outgoing = None
     else:
         dest = ui.expandpath(dest or 'default-push', dest or 'default')
         dest, branches = hg.parseurl(dest, opts.get('branch'))
diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -1190,9 +1190,10 @@  def getbundle(repo, source, heads=None, 
         if kwargs:
             raise ValueError(_('unsupported getbundle arguments: %s')
                              % ', '.join(sorted(kwargs.keys())))
         return changegroup.getchangegroup(repo, source, heads=heads,
-                                          common=common, bundlecaps=bundlecaps)
+                                          common=common,
+                                          bundlecaps=bundlecaps)[1]
 
     # bundle20 case
     b2caps = {}
     for bcaps in bundlecaps:
diff --git a/tests/test-bundle2-multiple-changegroups.t b/tests/test-bundle2-multiple-changegroups.t
--- a/tests/test-bundle2-multiple-changegroups.t
+++ b/tests/test-bundle2-multiple-changegroups.t
@@ -12,14 +12,14 @@  Create an extension to test bundle2 with
   >     # changegroup part we are being requested. Use the parent of each head
   >     # in 'heads' as intermediate heads for the first changegroup.
   >     intermediates = [repo[r].p1().node() for r in heads]
   >     cg = changegroup.getchangegroup(repo, source, heads=intermediates,
-  >                                      common=common, bundlecaps=bundlecaps)
+  >                                      common=common, bundlecaps=bundlecaps)[1]
   >     bundler.newpart('output', data='changegroup1')
   >     bundler.newpart('changegroup', data=cg.getchunks())
   >     cg = changegroup.getchangegroup(repo, source, heads=heads,
   >                                      common=common + intermediates,
-  >                                      bundlecaps=bundlecaps)
+  >                                      bundlecaps=bundlecaps)[1]
   >     bundler.newpart('output', data='changegroup2')
   >     bundler.newpart('changegroup', data=cg.getchunks())
   > 
   > def _pull(repo, *args, **kwargs):
diff --git a/tests/test-bundle2-remote-changegroup.t b/tests/test-bundle2-remote-changegroup.t
--- a/tests/test-bundle2-remote-changegroup.t
+++ b/tests/test-bundle2-remote-changegroup.t
@@ -63,9 +63,9 @@  Create an extension to test bundle2 remo
   >             _common, heads = args.split()
   >             common.extend(repo.lookup(r) for r in repo.revs(_common))
   >             heads = [repo.lookup(r) for r in repo.revs(heads)]
   >             cg = changegroup.getchangegroup(repo, 'changegroup',
-  >                 heads=heads, common=common)
+  >                 heads=heads, common=common)[1]
   >             newpart('changegroup', cg.getchunks())
   >         else:
   >             raise Exception('unknown verb')
   >