Mercurial > public > mercurial-scm > hg
comparison mercurial/localrepo.py @ 20930:4a987060d97e
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.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Tue, 01 Apr 2014 14:40:35 -0700 |
parents | 91b47139d0cb |
children | de60ca3a390e |
comparison
equal
deleted
inserted
replaced
20929:afe0b48ef2d7 | 20930:4a987060d97e |
---|---|
4 # | 4 # |
5 # This software may be used and distributed according to the terms of the | 5 # This software may be used and distributed according to the terms of the |
6 # GNU General Public License version 2 or any later version. | 6 # GNU General Public License version 2 or any later version. |
7 from node import hex, nullid, short | 7 from node import hex, nullid, short |
8 from i18n import _ | 8 from i18n import _ |
9 import peer, changegroup, subrepo, discovery, pushkey, obsolete, repoview | 9 import peer, changegroup, subrepo, pushkey, obsolete, repoview |
10 import changelog, dirstate, filelog, manifest, context, bookmarks, phases | 10 import changelog, dirstate, filelog, manifest, context, bookmarks, phases |
11 import lock as lockmod | 11 import lock as lockmod |
12 import transaction, store, encoding, exchange | 12 import transaction, store, encoding, exchange |
13 import scmutil, util, extensions, hook, error, revset | 13 import scmutil, util, extensions, hook, error, revset |
14 import match as matchmod | 14 import match as matchmod |
102 | 102 |
103 def known(self, nodes): | 103 def known(self, nodes): |
104 return self._repo.known(nodes) | 104 return self._repo.known(nodes) |
105 | 105 |
106 def getbundle(self, source, heads=None, common=None, bundlecaps=None): | 106 def getbundle(self, source, heads=None, common=None, bundlecaps=None): |
107 return self._repo.getbundle(source, heads=heads, common=common, | 107 return changegroup.getbundle(self._repo, source, heads=heads, |
108 bundlecaps=None) | 108 common=common, bundlecaps=None) |
109 | 109 |
110 # TODO We might want to move the next two calls into legacypeer and add | 110 # TODO We might want to move the next two calls into legacypeer and add |
111 # unbundle instead. | 111 # unbundle instead. |
112 | 112 |
113 def lock(self): | 113 def lock(self): |
1681 pass | 1681 pass |
1682 | 1682 |
1683 def push(self, remote, force=False, revs=None, newbranch=False): | 1683 def push(self, remote, force=False, revs=None, newbranch=False): |
1684 return exchange.push(self, remote, force, revs, newbranch) | 1684 return exchange.push(self, remote, force, revs, newbranch) |
1685 | 1685 |
1686 def getbundle(self, source, heads=None, common=None, bundlecaps=None): | |
1687 """Like changegroupsubset, but returns the set difference between the | |
1688 ancestors of heads and the ancestors common. | |
1689 | |
1690 If heads is None, use the local heads. If common is None, use [nullid]. | |
1691 | |
1692 The nodes in common might not all be known locally due to the way the | |
1693 current discovery protocol works. | |
1694 """ | |
1695 cl = self.changelog | |
1696 if common: | |
1697 hasnode = cl.hasnode | |
1698 common = [n for n in common if hasnode(n)] | |
1699 else: | |
1700 common = [nullid] | |
1701 if not heads: | |
1702 heads = cl.heads() | |
1703 outgoing = discovery.outgoing(cl, common, heads) | |
1704 return changegroup.getlocalbundle(self, source, outgoing, | |
1705 bundlecaps=bundlecaps) | |
1706 | |
1707 def changegroup(self, basenodes, source): | 1686 def changegroup(self, basenodes, source): |
1708 # to avoid a race we use changegroupsubset() (issue1320) | 1687 # to avoid a race we use changegroupsubset() (issue1320) |
1709 return changegroup.changegroupsubset(self, basenodes, self.heads(), | 1688 return changegroup.changegroupsubset(self, basenodes, self.heads(), |
1710 source) | 1689 source) |
1711 | 1690 |