[PATCH 2 of 6] obsolete: create accessors successors(), precursors(), children()
Martin von Zweigbergk
martinvonz at google.com
Tue Feb 3 22:01:09 CST 2015
# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1421821984 28800
# Tue Jan 20 22:33:04 2015 -0800
# Node ID 518d3caf2307a7699ec078afe9b1e6991640941c
# Parent 26f1b80d8c5fa5ed05df0eafab61d2241a478934
obsolete: create accessors successors(), precursors(), children()
Add trivial accessor methods for now. They will soon get smarter and
be responsible for populating the dictionaries the first time they are
called.
diff -r 26f1b80d8c5f -r 518d3caf2307 mercurial/obsolete.py
--- a/mercurial/obsolete.py Tue Jan 20 22:01:37 2015 -0800
+++ b/mercurial/obsolete.py Tue Jan 20 22:33:04 2015 -0800
@@ -476,7 +476,7 @@
Exist as a separated function to allow the evolve extension for a more
subtle handling.
"""
- if node.nullid in obsstore.precursors:
+ if node.nullid in obsstore._precursors:
raise util.Abort(_('bad obsolescence marker detected: '
'invalid successors nullid'))
@@ -502,9 +502,9 @@
# caches for various obsolescence related cache
self.caches = {}
self._all = []
- self.precursors = {}
- self.successors = {}
- self.children = {}
+ self._precursors = {}
+ self._successors = {}
+ self._children = {}
self.sopener = sopener
data = sopener.tryread('obsstore')
self._version = defaultformat
@@ -607,13 +607,13 @@
@util.nogc
def _addsuccessors(self, markers):
for mark in markers:
- self.successors.setdefault(mark[0], set()).add(mark)
+ self._successors.setdefault(mark[0], set()).add(mark)
@util.nogc
def _addprecursors(self, markers):
for mark in markers:
for suc in mark[1]:
- self.precursors.setdefault(suc, set()).add(mark)
+ self._precursors.setdefault(suc, set()).add(mark)
@util.nogc
def _addchildren(self, markers):
@@ -621,7 +621,16 @@
parents = mark[5]
if parents is not None:
for p in parents:
- self.children.setdefault(p, set()).add(mark)
+ self._children.setdefault(p, set()).add(mark)
+
+ def successors(self):
+ return self._successors
+
+ def precursors(self):
+ return self._precursors
+
+ def children(self):
+ return self._children
def _load(self, markers):
markers = list(markers) # to allow repeated iteration
@@ -645,8 +654,8 @@
pendingnodes = set(nodes)
seenmarkers = set()
seennodes = set(pendingnodes)
- precursorsmarkers = self.precursors
- children = self.children
+ precursorsmarkers = self.precursors()
+ children = self.children()
while pendingnodes:
direct = set()
for current in pendingnodes:
@@ -747,12 +756,12 @@
def precursormarkers(ctx):
"""obsolete marker marking this changeset as a successors"""
- for data in ctx._repo.obsstore.precursors.get(ctx.node(), ()):
+ for data in ctx._repo.obsstore.precursors().get(ctx.node(), ()):
yield marker(ctx._repo, data)
def successormarkers(ctx):
"""obsolete marker making this changeset obsolete"""
- for data in ctx._repo.obsstore.successors.get(ctx.node(), ()):
+ for data in ctx._repo.obsstore.successors().get(ctx.node(), ()):
yield marker(ctx._repo, data)
def allsuccessors(obsstore, nodes, ignoreflags=0):
@@ -764,10 +773,11 @@
initial nodes too."""
remaining = set(nodes)
seen = set(remaining)
+ successors = obsstore.successors()
while remaining:
current = remaining.pop()
yield current
- for mark in obsstore.successors.get(current, ()):
+ for mark in successors.get(current, ()):
# ignore marker flagged with specified flag
if mark[2] & ignoreflags:
continue
@@ -786,10 +796,11 @@
remaining = set(nodes)
seen = set(remaining)
+ precursors = obsstore.precursors()
while remaining:
current = remaining.pop()
yield current
- for mark in obsstore.precursors.get(current, ()):
+ for mark in precursors.get(current, ()):
# ignore marker flagged with specified flag
if mark[2] & ignoreflags:
continue
@@ -864,7 +875,7 @@
"""
- succmarkers = repo.obsstore.successors
+ succmarkers = repo.obsstore.successors()
# Stack of nodes we search successors sets for
toproceed = [initialnode]
@@ -1086,7 +1097,7 @@
obs = set()
getrev = repo.changelog.nodemap.get
getphase = repo._phasecache.phase
- for n in repo.obsstore.successors:
+ for n in repo.obsstore.successors():
rev = getrev(n)
if rev is not None and getphase(repo, rev):
obs.add(rev)
@@ -1144,10 +1155,10 @@
"""the set of rev that compete to be the final successors of some revision.
"""
divergent = set()
- obsstore = repo.obsstore
+ precursors = repo.obsstore.precursors()
newermap = {}
for ctx in repo.set('(not public()) - obsolete()'):
- mark = obsstore.precursors.get(ctx.node(), ())
+ mark = precursors.get(ctx.node(), ())
toprocess = set(mark)
while toprocess:
prec = toprocess.pop()[0]
@@ -1157,7 +1168,7 @@
if len(newer) > 1:
divergent.add(ctx.rev())
break
- toprocess.update(obsstore.precursors.get(prec, ()))
+ toprocess.update(precursors.get(prec, ()))
return divergent
More information about the Mercurial-devel
mailing list