# HG changeset patch # User Jun Wu # Date 1513721881 28800 # Node ID 910f56f0d09c929c2c50e065e23db474eedaf623 # Parent ddfd60760fac565bc3ca6b8beedcf9ea90d8d142 revset: make "fromsvn()" lazy "fromsvn()" could be a huge revset. Therefore a lazy version makes more sense. This also resolves a subtle ordering issue. See https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-August/103368.html for the context. diff --git a/hgsubversion/util.py b/hgsubversion/util.py --- a/hgsubversion/util.py +++ b/hgsubversion/util.py @@ -348,17 +348,13 @@ def revset_fromsvn(repo, subset, x): ''' args = revset.getargs(x, 0, 0, "fromsvn takes no arguments") - rev = repo.changelog.rev - bin = node.bin meta = repo.svnmeta(skiperrorcheck=True) if not meta.revmapexists: raise hgutil.Abort("svn metadata is missing - " "run 'hg svn rebuildmeta' to reconstruct it") - svnrevs = set(rev(h) for h in meta.revmap.hashes().keys()) - filteredrevs = filter(svnrevs.__contains__, subset) - if smartset is not None: - filteredrevs = smartset.baseset(filteredrevs) - return filteredrevs + tonode = repo.changelog.node + hashes = meta.revmap.hashes() + return subset.filter(lambda r: tonode(r) in hashes) def revset_svnrev(repo, subset, x): '''``svnrev(number)``