Mercurial > public > mercurial-scm > hg-stable
diff mercurial/changegroup.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 |
line wrap: on
line diff
--- 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) +