# HG changeset patch # User Jun Wu # Date 1513721940 28800 # Node ID 7f83be82d03f4d18406a87bdba0670b3c81db5c1 # Parent 910f56f0d09c929c2c50e065e23db474eedaf623 revset: fix ordering issue of "svnrev()" This is subtle. See https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-August/103368.html for the context. Basically, `subset & x` (instead of `x & subset`) should be used to make order correct given the current revset API. diff --git a/hgsubversion/util.py b/hgsubversion/util.py --- a/hgsubversion/util.py +++ b/hgsubversion/util.py @@ -373,14 +373,9 @@ def revset_svnrev(repo, subset, x): if not meta.revmapexists: raise hgutil.Abort("svn metadata is missing - " "run 'hg svn rebuildmeta' to reconstruct it") - revs = [] - for n in meta.revmap.revhashes(revnum): - r = repo[n].rev() - if r in subset: - revs.append(r) - if smartset is not None: - revs = smartset.baseset(revs) - return revs + torev = repo.changelog.rev + revs = revset.baseset(torev(r) for r in meta.revmap.revhashes(revnum)) + return subset & revs revsets = { 'fromsvn': revset_fromsvn,