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. |
|
268 | self.successors.setdefault(pre, set()).add(mark) | |
263 | for suc in sucs: |
|
269 | for suc in sucs: | |
264 |
self. |
|
270 | self.precursors.setdefault(suc, set()).add(mark) | |
265 |
if node.nullid in self. |
|
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 |
|
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 ma |
|
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. |
|
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 |
|
412 | for node in repo.obsstore.successors: | |
407 |
rev = nm.get( |
|
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