comparison mercurial/changegroup.py @ 38995:ed25722da873

changegroup: move part of _revisiondeltanarrow into group() Now all the logic for determining which delta generation code is called lives in a single function. Differential Revision: https://phab.mercurial-scm.org/D4187
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 06 Aug 2018 15:04:20 -0700
parents 6076053589b9
children 5baafb8fe253
comparison
equal deleted inserted replaced
38994:6076053589b9 38995:ed25722da873
708 progress.update(r + 1) 708 progress.update(r + 1)
709 prev, curr = revs[r], revs[r + 1] 709 prev, curr = revs[r], revs[r + 1]
710 linknode = lookup(store.node(curr)) 710 linknode = lookup(store.node(curr))
711 711
712 if self._ellipses: 712 if self._ellipses:
713 delta = self._revisiondeltanarrow(store, ischangelog, 713 linkrev = self._clnodetorev[linknode]
714 curr, prev, linknode) 714 self._clrevtolocalrev[linkrev] = curr
715
716 # This is a node to send in full, because the changeset it
717 # corresponds to was a full changeset.
718 if linknode in self._fullnodes:
719 delta = _revisiondeltanormal(store, curr, prev, linknode,
720 self._deltaparentfn)
721 elif linkrev not in self._precomputedellipsis:
722 delta = None
723 else:
724 delta = self._revisiondeltanarrow(store, ischangelog,
725 curr, linkrev, linknode)
715 else: 726 else:
716 delta = _revisiondeltanormal(store, curr, prev, linknode, 727 delta = _revisiondeltanormal(store, curr, prev, linknode,
717 self._deltaparentfn) 728 self._deltaparentfn)
718 729
719 if not delta: 730 if not delta:
1044 size += len(chunk) 1055 size += len(chunk)
1045 yield chunk 1056 yield chunk
1046 self._verbosenote(_('%8.i %s\n') % (size, fname)) 1057 self._verbosenote(_('%8.i %s\n') % (size, fname))
1047 progress.complete() 1058 progress.complete()
1048 1059
1049 def _revisiondeltanarrow(self, store, ischangelog, rev, prev, linknode): 1060 def _revisiondeltanarrow(self, store, ischangelog, rev, linkrev, linknode):
1050 linkrev = self._clnodetorev[linknode]
1051 self._clrevtolocalrev[linkrev] = rev
1052
1053 # This is a node to send in full, because the changeset it
1054 # corresponds to was a full changeset.
1055 if linknode in self._fullnodes:
1056 return _revisiondeltanormal(store, rev, prev, linknode,
1057 self._deltaparentfn)
1058
1059 # At this point, a node can either be one we should skip or an
1060 # ellipsis. If it's not an ellipsis, bail immediately.
1061 if linkrev not in self._precomputedellipsis:
1062 return
1063
1064 linkparents = self._precomputedellipsis[linkrev] 1061 linkparents = self._precomputedellipsis[linkrev]
1065 def local(clrev): 1062 def local(clrev):
1066 """Turn a changelog revnum into a local revnum. 1063 """Turn a changelog revnum into a local revnum.
1067 1064
1068 The ellipsis dag is stored as revnums on the changelog, 1065 The ellipsis dag is stored as revnums on the changelog,