[PATCH 1 of 9 V4] obsolete: introduce a _succs class
Boris Feld
boris.feld at octobus.net
Wed Aug 23 15:18:35 UTC 2017
# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1499036035 -7200
# Mon Jul 03 00:53:55 2017 +0200
# Node ID b689080388e11ecbfe69ca9b826a4367b6fd4384
# Parent 3cfc9070245fbaa8c4c010327f24d579a416370f
# EXP-Topic obsfatetemplate
obsolete: introduce a _succs class
It will be useful later when we will be adding markers to _succs in order to
represent a successorset with the list of markers from the root to each
successors sets. This information will be needed for the obsfate template I will
introduce.
Makes it a subclass of list so all callers will continue to work.
diff -r 3cfc9070245f -r b689080388e1 mercurial/obsutil.py
--- a/mercurial/obsutil.py Wed Aug 16 10:44:06 2017 -0700
+++ b/mercurial/obsutil.py Mon Jul 03 00:53:55 2017 +0200
@@ -327,6 +327,9 @@
obsoleted.add(rev)
return obsoleted
+class _succs(list):
+ """small class to represent a successors with some metadata about it"""
+
def successorssets(repo, initialnode, closest=False, cache=None):
"""Return set of all latest successors of initial nodes
@@ -445,7 +448,7 @@
# case (2): end of walk.
if current in repo:
# We have a valid successors.
- cache[current] = [(current,)]
+ cache[current] = [_succs((current,))]
else:
# Final obsolete version is unknown locally.
# Do not count that as a valid successors
@@ -521,13 +524,13 @@
succssets = []
for mark in sorted(succmarkers[current]):
# successors sets contributed by this marker
- markss = [[]]
+ markss = [_succs()]
for suc in mark[1]:
# cardinal product with previous successors
productresult = []
for prefix in markss:
for suffix in cache[suc]:
- newss = list(prefix)
+ newss = _succs(prefix)
for part in suffix:
# do not duplicated entry in successors set
# first entry wins.
More information about the Mercurial-devel
mailing list