# HG changeset patch # User Pierre-Yves David # Date 1513769342 -3600 # Node ID bacb44f4f33efd8ab50af92f26fb6aa196c34737 # Parent 058120e9d32ff8dbfe58e974071938368afcea66 stablesort: pass a jump recording function instead of a list This seems cleaner to abstract the underlying storage to the lower level. This also makes use more flexible about jump detection. diff -r 058120e9d32f -r bacb44f4f33e hgext3rd/evolve/stablesort.py --- a/hgext3rd/evolve/stablesort.py Wed Dec 20 12:27:17 2017 +0100 +++ b/hgext3rd/evolve/stablesort.py Wed Dec 20 12:29:02 2017 +0100 @@ -388,19 +388,23 @@ rev = current jumps = [] + + def recordjump(source, destination, jumptype): + jump = (source, destination, jumptype) + jumps.append(jump) process = self._process_exclusive_side for rev in process(lower_parent, higher_parent, cl, parents, - tiebreaker, jumps): + tiebreaker, recordjump): yield rev - jumps.append((rev, lower_parent, JUMPFINAL)) + recordjump(rev, lower_parent, JUMPFINAL) self._jumps[current] = jumps current = lower_parent def _process_exclusive_side(self, lower, higher, cl, parents, tiebreaker, - jumps): + recordjump): exclusive = cl.findmissingrevs(common=[lower], heads=[higher]) @@ -461,7 +465,7 @@ stack.append(lower_parent) next = higher_parent if jump_type is not None and next is not None: - jumps.append((current, next, jump_type)) + recordjump(current, next, jump_type) current = next _methodmap = {