##// END OF EJS Templates
obsolete: flip `obstore.successors` and `obsolete.precursors`...
Pierre-Yves David -
r17776:072812e9 default
parent child Browse files
Show More
@@ -20,6 +20,12 b' facilitate conflicts resolution, markers'
20 besides old and news changeset identifiers, such as creation date or
20 besides old and news changeset identifiers, such as creation date or
21 author name.
21 author name.
22
22
23 The old obsoleted changeset is called "precursor" and possible replacements are
24 called "successors". Markers that used changeset X as a precursors are called
25 "successor markers of X" because they hold information about the successors of
26 X. Markers that use changeset Y as a successors are call "precursor markers of
27 Y" because they hold information about the precursors of Y.
28
23 Examples:
29 Examples:
24
30
25 - When changeset A is replacement by a changeset A', one marker is stored:
31 - When changeset A is replacement by a changeset A', one marker is stored:
@@ -181,8 +187,8 b' class obsstore(object):'
181 """Store obsolete markers
187 """Store obsolete markers
182
188
183 Markers can be accessed with two mappings:
189 Markers can be accessed with two mappings:
184 - precursors: old -> set(new)
190 - precursors[x] -> set(markers on precursors edges of x)
185 - successors: new -> set(old)
191 - successors[x] -> set(markers on successors edges of x)
186 """
192 """
187
193
188 def __init__(self, sopener):
194 def __init__(self, sopener):
@@ -259,10 +265,10 b' class obsstore(object):'
259 for mark in markers:
265 for mark in markers:
260 self._all.append(mark)
266 self._all.append(mark)
261 pre, sucs = mark[:2]
267 pre, sucs = mark[:2]
262 self.precursors.setdefault(pre, set()).add(mark)
268 self.successors.setdefault(pre, set()).add(mark)
263 for suc in sucs:
269 for suc in sucs:
264 self.successors.setdefault(suc, set()).add(mark)
270 self.precursors.setdefault(suc, set()).add(mark)
265 if node.nullid in self.successors:
271 if node.nullid in self.precursors:
266 raise util.Abort(_('bad obsolescence marker detected: '
272 raise util.Abort(_('bad obsolescence marker detected: '
267 'invalid successors nullid'))
273 'invalid successors nullid'))
268
274
@@ -336,12 +342,12 b' def allmarkers(repo):'
336 yield marker(repo, markerdata)
342 yield marker(repo, markerdata)
337
343
338 def precursormarkers(ctx):
344 def precursormarkers(ctx):
339 """obsolete marker making this changeset obsolete"""
345 """obsolete marker marking this changeset as a successors"""
340 for data in ctx._repo.obsstore.precursors.get(ctx.node(), ()):
346 for data in ctx._repo.obsstore.precursors.get(ctx.node(), ()):
341 yield marker(ctx._repo, data)
347 yield marker(ctx._repo, data)
342
348
343 def successormarkers(ctx):
349 def successormarkers(ctx):
344 """obsolete marker marking this changeset as a successors"""
350 """obsolete marker making this changeset obsolete"""
345 for data in ctx._repo.obsstore.successors.get(ctx.node(), ()):
351 for data in ctx._repo.obsstore.successors.get(ctx.node(), ()):
346 yield marker(ctx._repo, data)
352 yield marker(ctx._repo, data)
347
353
@@ -354,7 +360,7 b' def anysuccessors(obsstore, node):'
354 while remaining:
360 while remaining:
355 current = remaining.pop()
361 current = remaining.pop()
356 yield current
362 yield current
357 for mark in obsstore.precursors.get(current, ()):
363 for mark in obsstore.successors.get(current, ()):
358 for suc in mark[1]:
364 for suc in mark[1]:
359 if suc not in seen:
365 if suc not in seen:
360 seen.add(suc)
366 seen.add(suc)
@@ -403,8 +409,8 b' def _computeobsoleteset(repo):'
403 """the set of obsolete revisions"""
409 """the set of obsolete revisions"""
404 obs = set()
410 obs = set()
405 nm = repo.changelog.nodemap
411 nm = repo.changelog.nodemap
406 for prec in repo.obsstore.precursors:
412 for node in repo.obsstore.successors:
407 rev = nm.get(prec)
413 rev = nm.get(node)
408 if rev is not None:
414 if rev is not None:
409 obs.add(rev)
415 obs.add(rev)
410 return set(repo.revs('%ld - public()', obs))
416 return set(repo.revs('%ld - public()', obs))
General Comments 0
You need to be logged in to leave comments. Login now