Comments
Patch
@@ -23,6 +23,12 @@
> [experimental]
> revisions.disambiguatewithin=:3
> EOF
+ $ hg l
+ 4:7ba5d
+ 3:7b
+ 2:72
+ 1:9
+ 0:b
9 was unambiguous and still is
$ hg l -r 9
1:9
@@ -32,6 +38,6 @@
[255]
7b is no longer ambiguous
$ hg l -r 7b
- 3:7ba57
+ 3:7b
$ cd ..
@@ -489,6 +489,21 @@
if not isrev(prefix):
return prefix
+ revset = repo.ui.config('experimental', 'revisions.disambiguatewithin')
+ if revset:
+ revs = repo.anyrevs([revset], user=True)
+ if cl.rev(node) in revs:
+ hexnode = hex(node)
+ for length in range(minlength, len(hexnode) + 1):
+ matches = []
+ prefix = hexnode[:length]
+ for rev in revs:
+ otherhexnode = repo[rev].hex()
+ if prefix == otherhexnode[:length]:
+ matches.append(otherhexnode)
+ if len(matches) == 1:
+ return disambiguate(prefix)
+
try:
return disambiguate(cl.shortest(node, minlength))
except error.LookupError: