# HG changeset patch # User Gregory Szorc # Date 2018-02-24 19:04:21 # Node ID 72da480db4a5f541d40d8ce86af8b89d8ced88a3 # Parent 83bade6206d4e8e9de792e4997b8ecd0954e0045 histedit: resolve revs before evaluating %ld revset We want to stop relying on basectx.__int__. That means we can't use the %ld revset operator with an iterable of contexts. So we expand an iterable of contexts into a list of revs before calling into the revset. Perhaps it would be worthwhile to add a revset format operator that recognizes context instances so we can just pass contexts as revset arguments? Differential Revision: https://phab.mercurial-scm.org/D2431 diff --git a/hgext/histedit.py b/hgext/histedit.py --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -1356,11 +1356,12 @@ def between(repo, old, new, keep): When keep is false, the specified set can't have children.""" ctxs = list(repo.set('%n::%n', old, new)) if ctxs and not keep: + revs = [ctx.rev() for ctx in ctxs] if (not obsolete.isenabled(repo, obsolete.allowunstableopt) and - repo.revs('(%ld::) - (%ld)', ctxs, ctxs)): + repo.revs('(%ld::) - (%ld)', revs, revs)): raise error.Abort(_('can only histedit a changeset together ' 'with all its descendants')) - if repo.revs('(%ld) and merge()', ctxs): + if repo.revs('(%ld) and merge()', revs): raise error.Abort(_('cannot edit history that contains merges')) root = ctxs[0] # list is already sorted by repo.set if not root.mutable():