Show More
@@ -84,6 +84,7 b' The header is followed by the markers. E' | |||||
84 | """ |
|
84 | """ | |
85 | import struct |
|
85 | import struct | |
86 | import util, base85, node |
|
86 | import util, base85, node | |
|
87 | import phases | |||
87 | from i18n import _ |
|
88 | from i18n import _ | |
88 |
|
89 | |||
89 | _pack = struct.pack |
|
90 | _pack = struct.pack | |
@@ -786,14 +787,26 b' def _computeextinctset(repo):' | |||||
786 | @cachefor('bumped') |
|
787 | @cachefor('bumped') | |
787 | def _computebumpedset(repo): |
|
788 | def _computebumpedset(repo): | |
788 | """the set of revs trying to obsolete public revisions""" |
|
789 | """the set of revs trying to obsolete public revisions""" | |
789 | # get all possible bumped changesets |
|
790 | bumped = set() | |
790 | tonode = repo.changelog.node |
|
791 | # utils function (avoid attribut lookup in the loop) | |
791 | publicnodes = (tonode(r) for r in repo.revs('public()')) |
|
792 | phase = repo._phasecache.phase # would be faster to grab the full list | |
792 | successors = allsuccessors(repo.obsstore, publicnodes, |
|
793 | public = phases.public | |
793 | ignoreflags=bumpedfix) |
|
794 | cl = repo.changelog | |
794 | # revision public or already obsolete don't count as bumped |
|
795 | torev = cl.nodemap.get | |
795 | query = '%ld - obsolete() - public()' |
|
796 | obs = getrevs(repo, 'obsolete') | |
796 | return set(repo.revs(query, _knownrevs(repo, successors))) |
|
797 | for rev in repo: | |
|
798 | # We only evaluate mutable, non-obsolete revision | |||
|
799 | if (public < phase(repo, rev)) and (rev not in obs): | |||
|
800 | node = cl.node(rev) | |||
|
801 | # (future) A cache of precursors may worth if split is very common | |||
|
802 | for pnode in allprecursors(repo.obsstore, [node], | |||
|
803 | ignoreflags=bumpedfix): | |||
|
804 | prev = torev(pnode) # unfiltered! but so is phasecache | |||
|
805 | if (prev is not None) and (phase(repo, prev) <= public): | |||
|
806 | # we have a public precursors | |||
|
807 | bumped.add(rev) | |||
|
808 | break # Next draft! | |||
|
809 | return bumped | |||
797 |
|
810 | |||
798 | @cachefor('divergent') |
|
811 | @cachefor('divergent') | |
799 | def _computedivergentset(repo): |
|
812 | def _computedivergentset(repo): |
General Comments 0
You need to be logged in to leave comments.
Login now