diff --git a/mercurial/revset.py b/mercurial/revset.py index 09124cce913f633e8ecafa6580751aaab3ddd4e2_bWVyY3VyaWFsL3JldnNldC5weQ==..b5c227f3e461923bd7ca099984374e6ca92f05ac_bWVyY3VyaWFsL3JldnNldC5weQ== 100644 --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -1294,7 +1294,10 @@ # i18n: "id" is a keyword n = getstring(l[0], _("id requires a string")) if len(n) == 40: - rn = repo[n].rev() + try: + rn = repo.changelog.rev(node.bin(n)) + except (LookupError, TypeError): + rn = None else: rn = None pm = repo.changelog._partialmatch(n) diff --git a/tests/test-revset.t b/tests/test-revset.t index 09124cce913f633e8ecafa6580751aaab3ddd4e2_dGVzdHMvdGVzdC1yZXZzZXQudA==..b5c227f3e461923bd7ca099984374e6ca92f05ac_dGVzdHMvdGVzdC1yZXZzZXQudA== 100644 --- a/tests/test-revset.t +++ b/tests/test-revset.t @@ -87,6 +87,7 @@ $ hg ci -Aqm9 $ hg tag -r6 1.0 + $ hg bookmark -r6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx $ hg clone --quiet -U -r 7 . ../remote1 $ hg clone --quiet -U -r 8 . ../remote2 @@ -554,6 +555,23 @@ hg: parse error: rev expects a number [255] +Test hexadecimal revision + $ log 'id(2)' + abort: 00changelog.i@2: ambiguous identifier! + [255] + $ log 'id(23268)' + 4 + $ log 'id(2785f51eece)' + 0 + $ log 'id(d5d0dcbdc4d9ff5dbb2d336f32f0bb561c1a532c)' + 8 + $ log 'id(d5d0dcbdc4a)' + $ log 'id(d5d0dcbdc4w)' + $ log 'id(d5d0dcbdc4d9ff5dbb2d336f32f0bb561c1a532d)' + $ log 'id(d5d0dcbdc4d9ff5dbb2d336f32f0bb561c1a532q)' + $ log 'id(1.0)' + $ log 'id(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)' + Test null revision $ log '(null)' -1