comparison mercurial/obsutil.py @ 43661:32048206e7be

merge with stable
author Yuya Nishihara <yuya@tcha.org>
date Fri, 15 Nov 2019 22:22:55 +0900
parents acaff50079ff e513e87b0476
children 9d2b2df2c2ba
comparison
equal deleted inserted replaced
43660:303bf312d5ed 43661:32048206e7be
108 else: 108 else:
109 rawmarkers = repo.obsstore.relevantmarkers(nodes) 109 rawmarkers = repo.obsstore.relevantmarkers(nodes)
110 110
111 for markerdata in rawmarkers: 111 for markerdata in rawmarkers:
112 yield marker(repo, markerdata) 112 yield marker(repo, markerdata)
113
114
115 def sortedmarkers(markers):
116 # last item of marker tuple ('parents') may be None or a tuple
117 return sorted(markers, key=lambda m: m[:-1] + (m[-1] or (),))
113 118
114 119
115 def closestpredecessors(repo, nodeid): 120 def closestpredecessors(repo, nodeid):
116 """yield the list of next predecessors pointing on visible changectx nodes 121 """yield the list of next predecessors pointing on visible changectx nodes
117 122
673 # - The second one handles successors defined in each marker. 678 # - The second one handles successors defined in each marker.
674 # 679 #
675 # Having none means pruned node, multiple successors means split, 680 # Having none means pruned node, multiple successors means split,
676 # single successors are standard replacement. 681 # single successors are standard replacement.
677 # 682 #
678 for mark in sorted(succmarkers[current]): 683 for mark in sortedmarkers(succmarkers[current]):
679 for suc in mark[1]: 684 for suc in mark[1]:
680 if suc not in cache: 685 if suc not in cache:
681 if suc in stackedset: 686 if suc in stackedset:
682 # cycle breaking 687 # cycle breaking
683 cache[suc] = [] 688 cache[suc] = []
710 # 715 #
711 # At the end we post-process successors sets to remove 716 # At the end we post-process successors sets to remove
712 # duplicated entry and successors set that are strict subset of 717 # duplicated entry and successors set that are strict subset of
713 # another one. 718 # another one.
714 succssets = [] 719 succssets = []
715 for mark in sorted(succmarkers[current]): 720 for mark in sortedmarkers(succmarkers[current]):
716 # successors sets contributed by this marker 721 # successors sets contributed by this marker
717 base = _succs() 722 base = _succs()
718 base.markers.add(mark) 723 base.markers.add(mark)
719 markss = [base] 724 markss = [base]
720 for suc in mark[1]: 725 for suc in mark[1]: