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 _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel