comparison mercurial/changegroup.py @ 39003:58377518201c

changegroup: pass state into _revisiondeltanarrow After this, the method no longer accesses self and can be split into a standalone function. Differential Revision: https://phab.mercurial-scm.org/D4195
author Gregory Szorc <gregory.szorc@gmail.com>
date Tue, 07 Aug 2018 15:08:29 -0700
parents eb8a0139ace3
children e11d07cc125c
comparison
equal deleted inserted replaced
39002:eb8a0139ace3 39003:58377518201c
705 delta = _revisiondeltanormal(store, curr, prev, linknode, 705 delta = _revisiondeltanormal(store, curr, prev, linknode,
706 self._deltaparentfn) 706 self._deltaparentfn)
707 elif linkrev not in self._precomputedellipsis: 707 elif linkrev not in self._precomputedellipsis:
708 delta = None 708 delta = None
709 else: 709 else:
710 delta = self._revisiondeltanarrow(store, ischangelog, 710 delta = self._revisiondeltanarrow(
711 curr, linkrev, linknode, 711 cl, store, ischangelog, curr, linkrev, linknode,
712 clrevtolocalrev) 712 clrevtolocalrev, self._fullclnodes,
713 self._precomputedellipsis)
713 else: 714 else:
714 delta = _revisiondeltanormal(store, curr, prev, linknode, 715 delta = _revisiondeltanormal(store, curr, prev, linknode,
715 self._deltaparentfn) 716 self._deltaparentfn)
716 717
717 if not delta: 718 if not delta:
1055 size += len(chunk) 1056 size += len(chunk)
1056 yield chunk 1057 yield chunk
1057 self._verbosenote(_('%8.i %s\n') % (size, fname)) 1058 self._verbosenote(_('%8.i %s\n') % (size, fname))
1058 progress.complete() 1059 progress.complete()
1059 1060
1060 def _revisiondeltanarrow(self, store, ischangelog, rev, linkrev, linknode, 1061 def _revisiondeltanarrow(self, cl, store, ischangelog, rev, linkrev,
1061 clrevtolocalrev): 1062 linknode, clrevtolocalrev, fullclnodes,
1062 linkparents = self._precomputedellipsis[linkrev] 1063 precomputedellipsis):
1064 linkparents = precomputedellipsis[linkrev]
1063 def local(clrev): 1065 def local(clrev):
1064 """Turn a changelog revnum into a local revnum. 1066 """Turn a changelog revnum into a local revnum.
1065 1067
1066 The ellipsis dag is stored as revnums on the changelog, 1068 The ellipsis dag is stored as revnums on the changelog,
1067 but when we're producing ellipsis entries for 1069 but when we're producing ellipsis entries for
1090 while walk: 1092 while walk:
1091 p = walk[0] 1093 p = walk[0]
1092 walk = walk[1:] 1094 walk = walk[1:]
1093 if p in clrevtolocalrev: 1095 if p in clrevtolocalrev:
1094 return clrevtolocalrev[p] 1096 return clrevtolocalrev[p]
1095 elif p in self._fullclnodes: 1097 elif p in fullclnodes:
1096 walk.extend([pp for pp in self._repo.changelog.parentrevs(p) 1098 walk.extend([pp for pp in cl.parentrevs(p)
1097 if pp != nullrev]) 1099 if pp != nullrev])
1098 elif p in self._precomputedellipsis: 1100 elif p in precomputedellipsis:
1099 walk.extend([pp for pp in self._precomputedellipsis[p] 1101 walk.extend([pp for pp in precomputedellipsis[p]
1100 if pp != nullrev]) 1102 if pp != nullrev])
1101 else: 1103 else:
1102 # In this case, we've got an ellipsis with parents 1104 # In this case, we've got an ellipsis with parents
1103 # outside the current bundle (likely an 1105 # outside the current bundle (likely an
1104 # incremental pull). We "know" that we can use the 1106 # incremental pull). We "know" that we can use the