localrepo: move the getlocalbundle method in changegroup module
This is a gratuitous code move aimed at reducing the localrepo bloatness.
The method had 3 callers total, far too few for being kept in local repo.
--- a/mercurial/changegroup.py Tue Apr 01 14:25:03 2014 -0700
+++ b/mercurial/changegroup.py Tue Apr 01 14:33:23 2014 -0700
@@ -480,3 +480,13 @@
bundler = bundle10(repo)
return getsubset(repo, outgoing, bundler, source)
+def getlocalbundle(repo, source, outgoing, bundlecaps=None):
+ """Like getbundle, but taking a discovery.outgoing as an argument.
+
+ This is only implemented for local repos and reuses potentially
+ precomputed sets in outgoing."""
+ if not outgoing.missing:
+ return None
+ bundler = bundle10(repo, bundlecaps)
+ return getsubset(repo, outgoing, bundler, source)
+
--- a/mercurial/commands.py Tue Apr 01 14:25:03 2014 -0700
+++ b/mercurial/commands.py Tue Apr 01 14:33:23 2014 -0700
@@ -1142,7 +1142,7 @@
onlyheads=heads,
force=opts.get('force'),
portable=True)
- cg = repo.getlocalbundle('bundle', outgoing, bundlecaps)
+ cg = changegroup.getlocalbundle(repo, 'bundle', outgoing, bundlecaps)
if not cg:
scmutil.nochangesfound(ui, repo, outgoing and outgoing.excluded)
return 1
--- a/mercurial/exchange.py Tue Apr 01 14:25:03 2014 -0700
+++ b/mercurial/exchange.py Tue Apr 01 14:33:23 2014 -0700
@@ -187,7 +187,8 @@
'push',
fastpath=True)
else:
- cg = pushop.repo.getlocalbundle('push', outgoing, bundlecaps)
+ cg = changegroup.getlocalbundle(pushop.repo, 'push', outgoing,
+ bundlecaps)
# apply changegroup to remote
if unbundle:
--- a/mercurial/localrepo.py Tue Apr 01 14:25:03 2014 -0700
+++ b/mercurial/localrepo.py Tue Apr 01 14:33:23 2014 -0700
@@ -1683,16 +1683,6 @@
def push(self, remote, force=False, revs=None, newbranch=False):
return exchange.push(self, remote, force, revs, newbranch)
- def getlocalbundle(self, source, outgoing, bundlecaps=None):
- """Like getbundle, but taking a discovery.outgoing as an argument.
-
- This is only implemented for local repos and reuses potentially
- precomputed sets in outgoing."""
- if not outgoing.missing:
- return None
- bundler = changegroup.bundle10(self, bundlecaps)
- return changegroup.getsubset(self, outgoing, bundler, source)
-
def getbundle(self, source, heads=None, common=None, bundlecaps=None):
"""Like changegroupsubset, but returns the set difference between the
ancestors of heads and the ancestors common.
@@ -1710,9 +1700,9 @@
common = [nullid]
if not heads:
heads = cl.heads()
- return self.getlocalbundle(source,
- discovery.outgoing(cl, common, heads),
- bundlecaps=bundlecaps)
+ outgoing = discovery.outgoing(cl, common, heads)
+ return changegroup.getlocalbundle(self, source, outgoing,
+ bundlecaps=bundlecaps)
def changegroup(self, basenodes, source):
# to avoid a race we use changegroupsubset() (issue1320)