D4038: scmutil: make shortest() respect disambiguation revset
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Fri Aug 3 23:12:24 EDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG6f7c9527030b: scmutil: make shortest() respect disambiguation revset (authored by martinvonz, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D4038?vs=9754&id=9877
REVISION DETAIL
https://phab.mercurial-scm.org/D4038
AFFECTED FILES
mercurial/scmutil.py
tests/test-revisions.t
CHANGE DETAILS
diff --git a/tests/test-revisions.t b/tests/test-revisions.t
--- a/tests/test-revisions.t
+++ b/tests/test-revisions.t
@@ -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 ..
diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -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:
To: martinvonz, #hg-reviewers
Cc: yuja, mercurial-devel
More information about the Mercurial-devel
mailing list