git: make {shortest()} return shortest *unique* prefix
It used to return the prefix of the specified length as long as the
full node was unique (i.e. always).
Differential Revision: https://phab.mercurial-scm.org/D8256
--- a/hgext/git/gitlog.py Tue Feb 11 00:44:59 2020 -0500
+++ b/hgext/git/gitlog.py Fri Mar 06 14:14:05 2020 -0800
@@ -170,7 +170,7 @@
matches = int(
self._db.execute(
'SELECT COUNT(*) FROM changelog WHERE node LIKE ?',
- (pycompat.sysstr(nodehex + b'%'),),
+ (pycompat.sysstr(candidate + b'%'),),
).fetchone()[0]
)
if matches == 1:
--- a/tests/test-git-interop.t Tue Feb 11 00:44:59 2020 -0500
+++ b/tests/test-git-interop.t Fri Mar 06 14:14:05 2020 -0800
@@ -180,10 +180,6 @@
summary: Add beta
-node|shortest works correctly
- $ hg log -r tip --template "{node|shortest}\n"
- 6626
-
hg annotate
$ hg annotate alpha
@@ -221,3 +217,15 @@
nothing to commit, working tree clean
$ hg status
+
+node|shortest works correctly
+ $ hg log -T '{node}\n' | sort
+ 3d9be8deba43482be2c81a4cb4be1f10d85fa8bc
+ 6626247b7dc8f231b183b8a4761c89139baca2ad
+ a1983dd7fb19cbd83ad5a1c2fc8bf3d775dea12f
+ ae1ab744f95bfd5b07cf573baef98a778058537b
+ c5864c9d16fb3431fe2c175ff84dc6accdbb2c18
+ d8ee22687733a1991813560b15128cd9734f4b48
+ $ hg log -r ae1ab744f95bfd5b07cf573baef98a778058537b --template "{shortest(node,1)}\n"
+ ae
+