Comments
Patch
@@ -1287,21 +1287,18 @@ def named(repo, subset, x):
def node_(repo, subset, x):
"""``id(string)``
Revision non-ambiguously specified by the given hex string prefix.
+
+ This predicate aborts the query, if the specified string doesn't
+ refer any (visible) existing revision. Use this with ``present()``
+ to continue the query even in such case.
"""
# i18n: "id" is a keyword
l = getargs(x, 1, 1, _("id requires one argument"))
# i18n: "id" is a keyword
n = getstring(l[0], _("id requires a string"))
- if len(n) == 40:
- rn = repo[n].rev()
- else:
- rn = None
- pm = repo.changelog._partialmatch(n)
- if pm is not None:
- rn = repo.changelog.rev(pm)
-
- if rn is None:
- return baseset()
+
+ n, rn = repo.findbyhash(n, abort=True)
+
result = baseset([rn])
return result & subset
@@ -194,8 +194,32 @@ check that various commands work well wi
[255]
$ hg debugrevspec --hidden 'rev(4)'
4
+ $ hg debugrevspec 'ca819180edb99ed25ceafb3e9584ac287e240b00'
+ abort: hidden revision 'ca819180edb99ed25ceafb3e9584ac287e240b00'!
+ (use --hidden to access hidden revisions)
+ [255]
+ $ hg debugrevspec 'id(ca819180edb99ed25ceafb3e9584ac287e240b00)'
+ abort: hidden revision 'ca819180edb99ed25ceafb3e9584ac287e240b00'!
+ (use --hidden to access hidden revisions)
+ [255]
+ $ hg debugrevspec 'ca819180edb9'
+ abort: hidden revision 'ca819180edb9'!
+ (use --hidden to access hidden revisions)
+ [255]
+ $ hg debugrevspec 'id(ca819180edb9)'
+ abort: hidden revision 'ca819180edb9'!
+ (use --hidden to access hidden revisions)
+ [255]
+ $ hg debugrevspec --hidden 'id(ca819180edb99ed25ceafb3e9584ac287e240b00)'
+ 4
+ $ hg debugrevspec --hidden 'id(ca819180edb9)'
+ 4
$ hg debugrevspec 'null'
-1
+ $ hg debugrevspec 'id(0000000000000000000000000000000000000000)'
+ -1
+ $ hg debugrevspec 'id(000000000000)'
+ -1
Check that public changeset are not accounted as obsolete:
@@ -488,6 +488,26 @@ min: empty on unordered set
4
$ log 'id(5)'
2
+ $ log 'ffffffffffffffffffffffffffffffffffffffff'
+ abort: unknown revision 'ffffffffffffffffffffffffffffffffffffffff'!
+ [255]
+ $ log 'id(ffffffffffffffffffffffffffffffffffffffff)'
+ abort: unknown revision 'ffffffffffffffffffffffffffffffffffffffff'!
+ [255]
+ $ log 'ffffffffffff'
+ abort: unknown revision 'ffffffffffff'!
+ [255]
+ $ log 'id(ffffffffffff)'
+ abort: unknown revision 'ffffffffffff'!
+ [255]
+ $ log 'present(ffffffffffffffffffffffffffffffffffffffff)'
+ $ log 'present(id(ffffffffffffffffffffffffffffffffffffffff))'
+ $ log 'present(id(ffffffffffff))'
+ $ hg bookmarks -r 0 ffffffffffffffffffffffffffffffffffffffff
+ $ log 'id(ffffffffffffffffffffffffffffffffffffffff)'
+ abort: unknown revision 'ffffffffffffffffffffffffffffffffffffffff'!
+ [255]
+ $ hg bookmarks -d ffffffffffffffffffffffffffffffffffffffff
$ log 'only(9)'
8
9