##// END OF EJS Templates
localrepo: move the _changegroupsubset method in changegroup module...
Pierre-Yves David -
r20925:5174c48e default
parent child Browse files
Show More
@@ -428,3 +428,20 b' class bundle10(object):'
428 428 def builddeltaheader(self, node, p1n, p2n, basenode, linknode):
429 429 # do nothing with basenode, it is implicitly the previous one in HG10
430 430 return struct.pack(self.deltaheader, node, p1n, p2n, linknode)
431
432 def getsubset(repo, outgoing, bundler, source, fastpath=False):
433 repo = repo.unfiltered()
434 commonrevs = outgoing.common
435 csets = outgoing.missing
436 heads = outgoing.missingheads
437 # We go through the fast path if we get told to, or if all (unfiltered
438 # heads have been requested (since we then know there all linkrevs will
439 # be pulled by the client).
440 heads.sort()
441 fastpathlinkrev = fastpath or (
442 repo.filtername is None and heads == sorted(repo.heads()))
443
444 repo.hook('preoutgoing', throw=True, source=source)
445 repo.changegroupinfo(csets, source)
446 gengroup = bundler.generate(commonrevs, csets, fastpathlinkrev, source)
447 return unbundle10(util.chunkbuffer(gengroup), 'UN')
@@ -181,10 +181,11 b' def _pushchangeset(pushop):'
181 181 # push everything,
182 182 # use the fast path, no race possible on push
183 183 bundler = changegroup.bundle10(pushop.repo, bundlecaps)
184 cg = pushop.repo._changegroupsubset(outgoing,
185 bundler,
186 'push',
187 fastpath=True)
184 cg = changegroup.getsubset(pushop.repo,
185 outgoing,
186 bundler,
187 'push',
188 fastpath=True)
188 189 else:
189 190 cg = pushop.repo.getlocalbundle('push', outgoing, bundlecaps)
190 191
@@ -1714,7 +1714,7 b' class localrepository(object):'
1714 1714 discbases.extend([p for p in cl.parents(n) if p != nullid])
1715 1715 outgoing = discovery.outgoing(cl, discbases, heads)
1716 1716 bundler = changegroup.bundle10(self)
1717 return self._changegroupsubset(outgoing, bundler, source)
1717 return changegroup.getsubset(self, outgoing, bundler, source)
1718 1718
1719 1719 def getlocalbundle(self, source, outgoing, bundlecaps=None):
1720 1720 """Like getbundle, but taking a discovery.outgoing as an argument.
@@ -1724,7 +1724,7 b' class localrepository(object):'
1724 1724 if not outgoing.missing:
1725 1725 return None
1726 1726 bundler = changegroup.bundle10(self, bundlecaps)
1727 return self._changegroupsubset(outgoing, bundler, source)
1727 return changegroup.getsubset(self, outgoing, bundler, source)
1728 1728
1729 1729 def getbundle(self, source, heads=None, common=None, bundlecaps=None):
1730 1730 """Like changegroupsubset, but returns the set difference between the
@@ -1747,24 +1747,6 b' class localrepository(object):'
1747 1747 discovery.outgoing(cl, common, heads),
1748 1748 bundlecaps=bundlecaps)
1749 1749
1750 @unfilteredmethod
1751 def _changegroupsubset(self, outgoing, bundler, source,
1752 fastpath=False):
1753 commonrevs = outgoing.common
1754 csets = outgoing.missing
1755 heads = outgoing.missingheads
1756 # We go through the fast path if we get told to, or if all (unfiltered
1757 # heads have been requested (since we then know there all linkrevs will
1758 # be pulled by the client).
1759 heads.sort()
1760 fastpathlinkrev = fastpath or (
1761 self.filtername is None and heads == sorted(self.heads()))
1762
1763 self.hook('preoutgoing', throw=True, source=source)
1764 self.changegroupinfo(csets, source)
1765 gengroup = bundler.generate(commonrevs, csets, fastpathlinkrev, source)
1766 return changegroup.unbundle10(util.chunkbuffer(gengroup), 'UN')
1767
1768 1750 def changegroup(self, basenodes, source):
1769 1751 # to avoid a race we use changegroupsubset() (issue1320)
1770 1752 return self.changegroupsubset(basenodes, self.heads(), source)
General Comments 0
You need to be logged in to leave comments. Login now