Patchwork [1,of,5] outgoing: pass a repo object to the constructor

login
register
mail settings
Submitter Pierre-Yves David
Date Aug. 11, 2016, 8:06 p.m.
Message ID <69c5716ec081416cfdde.1470946011@nodosa.octopoid.net>
Download mbox | patch
Permalink /patch/16256/
State Accepted
Headers show

Comments

Pierre-Yves David - Aug. 11, 2016, 8:06 p.m.
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@ens-lyon.org>
# Date 1470749213 -7200
#      Tue Aug 09 15:26:53 2016 +0200
# Node ID 69c5716ec081416cfdde62aac72661e9151e0abc
# Parent  1a29db79a98d112f2b24876db0ac81bdb40b6b99
# EXP-Topic outgoing
outgoing: pass a repo object to the constructor

We are to introduce more code constructing such object in the code base. It will
be more convenient to pass a repository object, all current users already
operate at the repository level anyway. More changes to the contructor argument
are coming in later changeset.
Pierre-Yves David - Aug. 11, 2016, 8:09 p.m.
On 08/11/2016 10:06 PM, Pierre-Yves David wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david@ens-lyon.org>
> # Date 1470749213 -7200
> #      Tue Aug 09 15:26:53 2016 +0200
> # Node ID 69c5716ec081416cfdde62aac72661e9151e0abc
> # Parent  1a29db79a98d112f2b24876db0ac81bdb40b6b99
> # EXP-Topic outgoing
> outgoing: pass a repo object to the constructor

Greg and I chatted about is changegroup series. As a result I did a 
proposal for how to have more powerful outgoing object creation  while 
he is looking at simplifying the number of changegroup function and 
there return type. This is the result of my poking at the problem.

Cheers

Patch

diff -r 1a29db79a98d -r 69c5716ec081 mercurial/changegroup.py
--- a/mercurial/changegroup.py	Fri Aug 05 14:00:30 2016 -0400
+++ b/mercurial/changegroup.py	Tue Aug 09 15:26:53 2016 +0200
@@ -986,7 +986,7 @@  def computeoutgoing(repo, heads, common)
         common = [nullid]
     if not heads:
         heads = cl.heads()
-    return discovery.outgoing(cl, common, heads)
+    return discovery.outgoing(repo, common, heads)
 
 def getchangegroup(repo, source, heads=None, common=None, bundlecaps=None,
                    version='01'):
diff -r 1a29db79a98d -r 69c5716ec081 mercurial/discovery.py
--- a/mercurial/discovery.py	Fri Aug 05 14:00:30 2016 -0400
+++ b/mercurial/discovery.py	Tue Aug 09 15:26:53 2016 +0200
@@ -76,10 +76,10 @@  class outgoing(object):
     The sets are computed on demand from the heads, unless provided upfront
     by discovery.'''
 
-    def __init__(self, revlog, commonheads, missingheads):
+    def __init__(self, repo, commonheads, missingheads):
         self.commonheads = commonheads
         self.missingheads = missingheads
-        self._revlog = revlog
+        self._revlog = repo.changelog
         self._common = None
         self._missing = None
         self.excluded = []
@@ -120,7 +120,7 @@  def outgoingbetween(repo, roots, heads):
     csets, roots, heads = cl.nodesbetween(roots, heads)
     included = set(csets)
     discbases = [n for n in discbases if n not in included]
-    return outgoing(cl, discbases, heads)
+    return outgoing(repo, discbases, heads)
 
 def findcommonoutgoing(repo, other, onlyheads=None, force=False,
                        commoninc=None, portable=False):
@@ -137,7 +137,7 @@  def findcommonoutgoing(repo, other, only
     If portable is given, compute more conservative common and missingheads,
     to make bundles created from the instance more portable.'''
     # declare an empty outgoing object to be filled later
-    og = outgoing(repo.changelog, None, None)
+    og = outgoing(repo, None, None)
 
     # get common set if not provided
     if commoninc is None:
diff -r 1a29db79a98d -r 69c5716ec081 tests/test-bundle2-format.t
--- a/tests/test-bundle2-format.t	Fri Aug 05 14:00:30 2016 -0400
+++ b/tests/test-bundle2-format.t	Tue Aug 09 15:26:53 2016 +0200
@@ -112,7 +112,7 @@  Create an extension to test bundle2 API
   >             bundled = repo.revs('%ld::%ld', revs, revs)
   >             headmissing = [c.node() for c in repo.set('heads(%ld)', revs)]
   >             headcommon  = [c.node() for c in repo.set('parents(%ld) - %ld', revs, revs)]
-  >             outgoing = discovery.outgoing(repo.changelog, headcommon, headmissing)
+  >             outgoing = discovery.outgoing(repo, headcommon, headmissing)
   >             cg = changegroup.getlocalchangegroup(repo, 'test:bundle2', outgoing, None)
   >             bundler.newpart('changegroup', data=cg.getchunks(),
   >                             mandatory=False)