# HG changeset patch # User Pierre-Yves David # Date 1396388435 25200 # Node ID 4a987060d97e12b196e40e0738928805a46ff214 # Parent afe0b48ef2d79a2c31608f0406eea43674434afc localrepo: move the getbundle method in changegroup module This is a gratuitous code move aimed at reducing the localrepo bloatness. The method had few callers, not enough to be kept in local repo. The peer API remains unchanged. diff -r afe0b48ef2d7 -r 4a987060d97e mercurial/changegroup.py --- a/mercurial/changegroup.py Thu Apr 03 12:59:12 2014 -0500 +++ b/mercurial/changegroup.py Tue Apr 01 14:40:35 2014 -0700 @@ -490,3 +490,23 @@ bundler = bundle10(repo, bundlecaps) return getsubset(repo, outgoing, bundler, source) +def getbundle(repo, source, heads=None, common=None, bundlecaps=None): + """Like changegroupsubset, but returns the set difference between the + ancestors of heads and the ancestors common. + + 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. + """ + cl = repo.changelog + if common: + hasnode = cl.hasnode + common = [n for n in common if hasnode(n)] + else: + common = [nullid] + if not heads: + heads = cl.heads() + outgoing = discovery.outgoing(cl, common, heads) + return getlocalbundle(repo, source, outgoing, bundlecaps=bundlecaps) + diff -r afe0b48ef2d7 -r 4a987060d97e mercurial/commands.py --- a/mercurial/commands.py Thu Apr 03 12:59:12 2014 -0500 +++ b/mercurial/commands.py Tue Apr 01 14:40:35 2014 -0700 @@ -1129,8 +1129,8 @@ "a destination")) common = [repo.lookup(rev) for rev in base] heads = revs and map(repo.lookup, revs) or revs - cg = repo.getbundle('bundle', heads=heads, common=common, - bundlecaps=bundlecaps) + cg = changegroup.getbundle(repo, 'bundle', heads=heads, common=common, + bundlecaps=bundlecaps) outgoing = None else: dest = ui.expandpath(dest or 'default-push', dest or 'default') diff -r afe0b48ef2d7 -r 4a987060d97e mercurial/localrepo.py --- a/mercurial/localrepo.py Thu Apr 03 12:59:12 2014 -0500 +++ b/mercurial/localrepo.py Tue Apr 01 14:40:35 2014 -0700 @@ -6,7 +6,7 @@ # GNU General Public License version 2 or any later version. from node import hex, nullid, short from i18n import _ -import peer, changegroup, subrepo, discovery, pushkey, obsolete, repoview +import peer, changegroup, subrepo, pushkey, obsolete, repoview import changelog, dirstate, filelog, manifest, context, bookmarks, phases import lock as lockmod import transaction, store, encoding, exchange @@ -104,8 +104,8 @@ return self._repo.known(nodes) def getbundle(self, source, heads=None, common=None, bundlecaps=None): - return self._repo.getbundle(source, heads=heads, common=common, - bundlecaps=None) + return changegroup.getbundle(self._repo, source, heads=heads, + common=common, bundlecaps=None) # TODO We might want to move the next two calls into legacypeer and add # unbundle instead. @@ -1683,27 +1683,6 @@ def push(self, remote, force=False, revs=None, newbranch=False): return exchange.push(self, remote, force, revs, newbranch) - 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. - - 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. - """ - cl = self.changelog - if common: - hasnode = cl.hasnode - common = [n for n in common if hasnode(n)] - else: - common = [nullid] - if not heads: - heads = cl.heads() - 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) return changegroup.changegroupsubset(self, basenodes, self.heads(), diff -r afe0b48ef2d7 -r 4a987060d97e mercurial/wireproto.py --- a/mercurial/wireproto.py Thu Apr 03 12:59:12 2014 -0500 +++ b/mercurial/wireproto.py Tue Apr 01 14:40:35 2014 -0700 @@ -602,7 +602,7 @@ opts[k] = decodelist(v) elif k == 'bundlecaps': opts[k] = set(v.split(',')) - cg = repo.getbundle('serve', **opts) + cg = changegroupmod.getbundle(repo, 'serve', **opts) return streamres(proto.groupchunks(cg)) @wireprotocommand('heads')