# HG changeset patch # User Pierre-Yves David # Date 1349843226 -7200 # Node ID 1b8e820ef19d831b8851d45677d861a6758fb042 # Parent 9c7497cd39fdb2ed49eac29d45c4f75042e06400 histedit: simplify computation of edited set (issue3620) This complex code can be replaced by two simple revset calls. diff -r 9c7497cd39fd -r 1b8e820ef19d hgext/histedit.py --- a/hgext/histedit.py Thu Sep 27 13:59:48 2012 +0200 +++ b/hgext/histedit.py Wed Oct 10 06:27:06 2012 +0200 @@ -587,22 +587,10 @@ """select and validate the set of revision to edit When keep is false, the specified set can't have children.""" - revs = [old] - current = old - while current != new: - ctx = repo[current] - if not keep and len(ctx.children()) > 1: - raise util.Abort(_('cannot edit history that would orphan nodes')) - if len(ctx.parents()) != 1 and ctx.parents()[1] != node.nullid: - raise util.Abort(_("can't edit history with merges")) - if not ctx.children(): - current = new - else: - current = ctx.children()[0].node() - revs.append(current) - if len(repo[current].children()) and not keep: + revs = list(repo.set('%n::%n', old, new)) + if not keep and repo.revs('(%ld::) - %ld', revs, revs): raise util.Abort(_('cannot edit history that would orphan nodes')) - return revs + return [c.node() for c in revs] def writestate(repo, parentnode, rules, keep, topmost, replacements):