From patchwork Sat Mar 21 05:26:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1,of,3] revset: allow repo.revs('%d', wdirrev) From: Yuya Nishihara X-Patchwork-Id: 45858 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Sat, 21 Mar 2020 14:26:53 +0900 # HG changeset patch # User Yuya Nishihara # Date 1584764867 -32400 # Sat Mar 21 13:27:47 2020 +0900 # Node ID d0aa302e184789f1af3048814d23d0a4cedcca15 # Parent c1c2f6e0cd9f819389c18245d791c906023d9545 revset: allow repo.revs('%d', wdirrev) Otherwise we can't write repo.revs('null:%d', subset.max()) to build a smartset covering the range {null .. tip} + {wdir} if subset includes wdir. diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2108,7 +2108,8 @@ def _rev(repo, subset, x): except (TypeError, ValueError): # i18n: "rev" is a keyword raise error.ParseError(_(b"rev expects a number")) - repo.changelog.node(l) # check that the rev exists + if l not in _virtualrevs: + repo.changelog.node(l) # check that the rev exists return subset & baseset([l]) diff --git a/tests/test-template-functions.t b/tests/test-template-functions.t --- a/tests/test-template-functions.t +++ b/tests/test-template-functions.t @@ -1263,6 +1263,13 @@ default. join() should agree with the de 5:13207e5a10d9fd28ec424934298e176197f2c67f, 4:bbe44766e73d5f11ed2177f1838de10c53ef3e74 +%d parameter handling: + + $ hg log -T '{revset("%d", rev)}\n' -r'wdir()' + 2147483647 + $ hg log -T '{revset("%d", rev)}\n' -r'null' + -1 + Invalid arguments passed to revset() $ hg log -T '{revset("%whatever", 0)}\n'