--- a/hgext/evolve.py Wed Aug 27 10:21:30 2014 +0200
+++ b/hgext/evolve.py Wed Aug 27 10:22:50 2014 +0200
@@ -348,84 +348,6 @@
opts['user'] = ui.username()
-createmarkers = obsolete.createmarkers
-if not util.safehasattr(obsolete.obsstore, 'relevantmarkers'):
-
- @eh.wrapfunction(mercurial.obsolete, 'createmarkers')
- def _createmarkers(orig, repo, relations, *args, **kwargs):
- """register parent information at prune time"""
- # every time this test is run, a kitten is slain.
- # Change it as soon as possible
- if '[,{metadata}]' in orig.__doc__:
- relations = list(relations)
- for idx, rel in enumerate(relations):
- prec = rel[0]
- sucs = rel[1]
- if not sucs:
- meta = {}
- if 2 < len(rel):
- meta.update(rel[2])
- for i, p in enumerate(prec.parents(), 1):
- meta['p%i' % i] = p.hex()
- relations[idx] = (prec, sucs, meta)
- return orig(repo, relations, *args, **kwargs)
-
- def createmarkers(*args, **kwargs):
- return obsolete.createmarkers(*args, **kwargs)
-
- class pruneobsstore(obsolete.obsstore):
-
- def __init__(self, *args, **kwargs):
- self.prunedchildren = {}
- return super(pruneobsstore, self).__init__(*args, **kwargs)
-
- def _load(self, markers):
- markers = self._prunedetectingmarkers(markers)
- return super(pruneobsstore, self)._load(markers)
-
-
- def _prunedetectingmarkers(self, markers):
- for m in markers:
- if not m[1]: # no successors
- meta = obsolete.decodemeta(m[3])
- if 'p1' in meta:
- p1 = node.bin(meta['p1'])
- self.prunedchildren.setdefault(p1, set()).add(m)
- if 'p2' in meta:
- p2 = node.bin(meta['p2'])
- self.prunedchildren.setdefault(p2, set()).add(m)
- yield m
-
- obsolete.obsstore = pruneobsstore
-
- @eh.addattr(obsolete.obsstore, 'relevantmarkers')
- def relevantmarkers(self, nodes):
- """return a set of all obsolescence marker relevant to a set of node.
-
- "relevant" to a set of node mean:
-
- - marker that use this changeset as successors
- - prune marker of direct children on this changeset.
- - recursive application of the two rules on precursors of these markers
-
- It a set so you cannot rely on order"""
- seennodes = set(nodes)
- seenmarkers = set()
- pendingnodes = set(nodes)
- precursorsmarkers = self.precursors
- prunedchildren = self.prunedchildren
- while pendingnodes:
- direct = set()
- for current in pendingnodes:
- direct.update(precursorsmarkers.get(current, ()))
- direct.update(prunedchildren.get(current, ()))
- direct -= seenmarkers
- pendingnodes = set([m[0] for m in direct])
- seenmarkers |= direct
- pendingnodes -= seennodes
- seennodes |= pendingnodes
- return seenmarkers
-
#####################################################################
### Critical fix ###
#####################################################################
@@ -897,11 +819,11 @@
oldbookmarks = repo.nodebookmarks(nodesrc)
if nodenew is not None:
phases.retractboundary(repo, tr, destphase, [nodenew])
- createmarkers(repo, [(repo[nodesrc], (repo[nodenew],))])
+ obsolete.createmarkers(repo, [(repo[nodesrc], (repo[nodenew],))])
for book in oldbookmarks:
repo._bookmarks[book] = nodenew
else:
- createmarkers(repo, [(repo[nodesrc], ())])
+ obsolete.createmarkers(repo, [(repo[nodesrc], ())])
# Behave like rebase, move bookmarks to dest
for book in oldbookmarks:
repo._bookmarks[book] = dest.node()
@@ -1456,7 +1378,7 @@
tmpid = relocate(repo, bumped, prec.p1())
if tmpid is not None:
tmpctx = repo[tmpid]
- createmarkers(repo, [(bumped, (tmpctx,))])
+ obsolete.createmarkers(repo, [(bumped, (tmpctx,))])
except MergeFailure:
repo.opener.write('graftstate', bumped.hex() + '\n')
repo.ui.write_err(_('evolution failed!\n'))
@@ -1498,11 +1420,11 @@
newid = repo.commitctx(new)
if newid is None:
- createmarkers(repo, [(tmpctx, ())])
+ obsolete.createmarkers(repo, [(tmpctx, ())])
newid = prec.node()
else:
phases.retractboundary(repo, tr, bumped.phase(), [newid])
- createmarkers(repo, [(tmpctx, (repo[newid],))],
+ obsolete.createmarkers(repo, [(tmpctx, (repo[newid],))],
flag=obsolete.bumpedfix)
bmupdate(newid)
tr.close()
@@ -1606,7 +1528,7 @@
# no changes
else:
new = repo['.']
- createmarkers(repo, [(other, (new,))])
+ obsolete.createmarkers(repo, [(other, (new,))])
phases.retractboundary(repo, tr, other.phase(), [new.node()])
tr.close()
finally:
@@ -1811,7 +1733,7 @@
relations = [(p, (s,)) for p, s in zip(precs, sucs)]
# create markers
- createmarkers(repo, relations, metadata=metadata)
+ obsolete.createmarkers(repo, relations, metadata=metadata)
# informs that changeset have been pruned
ui.status(_('%i changesets pruned\n') % len(precs))
@@ -2037,7 +1959,7 @@
raise util.Abort(_('nothing to uncommit'),
hint=_("use --all to uncommit all files"))
# Move local changes on filtered changeset
- createmarkers(repo, [(old, (repo[newid],))])
+ obsolete.createmarkers(repo, [(old, (repo[newid],))])
phases.retractboundary(repo, tr, oldphase, [newid])
repo.dirstate.setparents(newid, node.nullid)
_uncommitdirstate(repo, old, match)
@@ -2068,7 +1990,7 @@
oldbookmarks.extend(repo.nodebookmarks(old.node()))
markers.append((old, (new,)))
if markers:
- createmarkers(repo, markers)
+ obsolete.createmarkers(repo, markers)
for book in oldbookmarks:
repo._bookmarks[book] = new.node()
if oldbookmarks:
@@ -2123,7 +2045,7 @@
# store touched version to help potential children
newmapping[ctx.node()] = new
if not duplicate:
- createmarkers(repo, [(ctx, (repo[new],))])
+ obsolete.createmarkers(repo, [(ctx, (repo[new],))])
phases.retractboundary(repo, tr, ctx.phase(), [new])
if ctx in repo[None].parents():
repo.dirstate.setparents(new, node.nullid)
@@ -2228,7 +2150,7 @@
[root.p1().node(), root.p2().node()],
commitopts=commitopts)
phases.retractboundary(repo, tr, targetphase, [newid])
- createmarkers(repo, [(ctx, (repo[newid],))
+ obsolete.createmarkers(repo, [(ctx, (repo[newid],))
for ctx in allctx])
tr.close()
finally: