Skip to content
Snippets Groups Projects
Commit b5c227f3 authored by Alexander Drozdov's avatar Alexander Drozdov
Browse files

revset: id() called with 40-byte strings should give the same results as for short strings

The patch solves two issues:
1. id(unknown_full_hash) aborts, but id(unknown_short_hash) doesn't
2. id(40byte_tag_or_bookmark) returns tagged/bookmarked revision,
   but id(non-40byte_tag_or_bookmark) doesn't

After the patch:
1. id(unknown_full_hash) doesn't abort
2. id(40byte_tag_or_bookmark) returns empty set
parent 09124cce
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment