D2431: histedit: resolve revs before evaluating %ld revset
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Sat Feb 24 19:31:20 UTC 2018
indygreg created this revision.
Herald added a reviewer: durin42.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
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?
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D2431
AFFECTED FILES
hgext/histedit.py
CHANGE DETAILS
diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -1356,11 +1356,12 @@
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():
To: indygreg, durin42, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list