diff tests/test-show-stack.t @ 34191:e6b5e7329ff2

show: use consistent (and possibly shorter) node lengths `hg show` makes heavy use of shortest() to limit the length of the node hash. For the "stack" and "work" views, you are often looking at multiple lines of similar output for "lines" of work. It is visually appeasing for things to vertically align. A naive use of {shortest(node, N)} could result in variable length nodes and for the first character of the description to vary by a column or two. We implement a function to determine the longest shortest prefix for a set of revisions. The new function is used to determine the printed node length for all `hg show` views. .. feature:: show: use consistent node length in views Our previous shortest node length of 5 was arbitrarily chosen. shortest() already does the work of ensuring that a partial node isn't ambiguous with an integer revision, which is our primary risk of a collision for very short nodes. It should be safe to go with the shortest node possible. Existing code is also optimized to handle nodes as short as 4. So, we decrease the minimum hash length from 5 to 4. We also add a test demonstrating that prefix collisions increase the node length. .. feature:: show: decrease minimum displayed hash length from 5 to 4 Differential Revision: https://phab.mercurial-scm.org/D558
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 13 Sep 2017 21:15:46 -0700
parents 9e7efe421395
children
line wrap: on
line diff
--- a/tests/test-show-stack.t	Thu Aug 03 21:51:34 2017 -0700
+++ b/tests/test-show-stack.t	Wed Sep 13 21:15:46 2017 -0700
@@ -17,7 +17,7 @@
   $ echo 0 > foo
   $ hg -q commit -A -m 'commit 0'
   $ hg show stack
-    @  9f171 commit 0
+    @  9f17 commit 0
 
 Stack displays multiple draft changesets
 
@@ -30,48 +30,48 @@
   $ echo 4 > foo
   $ hg commit -m 'commit 4'
   $ hg show stack
-    @  2737b commit 4
-    o  d1a69 commit 3
-    o  128c8 commit 2
-    o  181cc commit 1
-    o  9f171 commit 0
+    @  2737 commit 4
+    o  d1a6 commit 3
+    o  128c commit 2
+    o  181c commit 1
+    o  9f17 commit 0
 
 Public parent of draft base is displayed, separated from stack
 
   $ hg phase --public -r 0
   $ hg show stack
-    @  2737b commit 4
-    o  d1a69 commit 3
-    o  128c8 commit 2
-    o  181cc commit 1
+    @  2737 commit 4
+    o  d1a6 commit 3
+    o  128c commit 2
+    o  181c commit 1
    /   (stack base)
-  o  9f171 commit 0
+  o  9f17 commit 0
 
   $ hg phase --public -r 1
   $ hg show stack
-    @  2737b commit 4
-    o  d1a69 commit 3
-    o  128c8 commit 2
+    @  2737 commit 4
+    o  d1a6 commit 3
+    o  128c commit 2
    /   (stack base)
-  o  181cc commit 1
+  o  181c commit 1
 
 Draft descendants are shown
 
   $ hg -q up 2
   $ hg show stack
-    o  2737b commit 4
-    o  d1a69 commit 3
-    @  128c8 commit 2
+    o  2737 commit 4
+    o  d1a6 commit 3
+    @  128c commit 2
    /   (stack base)
-  o  181cc commit 1
+  o  181c commit 1
 
   $ hg -q up 3
   $ hg show stack
-    o  2737b commit 4
-    @  d1a69 commit 3
-    o  128c8 commit 2
+    o  2737 commit 4
+    @  d1a6 commit 3
+    o  128c commit 2
    /   (stack base)
-  o  181cc commit 1
+  o  181c commit 1
 
 working dir on public changeset should display special message
 
@@ -89,10 +89,10 @@
   $ hg show stack
    \ /  (multiple children)
     |
-    o  d1a69 commit 3
-    @  128c8 commit 2
+    o  d1a6 commit 3
+    @  128c commit 2
    /   (stack base)
-  o  181cc commit 1
+  o  181c commit 1
 
   $ cd ..
 
@@ -117,9 +117,9 @@
 TODO doesn't yet handle case where wdir is a draft merge
 
   $ hg show stack
-    @  8ee90 merge heads
+    @  8ee9 merge heads
    /   (stack base)
-  o  59478 head 1
+  o  5947 head 1
 
   $ echo d1 > foo
   $ hg commit -m 'draft 1'
@@ -127,10 +127,10 @@
   $ hg commit -m 'draft 2'
 
   $ hg show stack
-    @  430d5 draft 2
-    o  787b1 draft 1
+    @  430d draft 2
+    o  787b draft 1
    /   (stack base)
-  o  8ee90 merge heads
+  o  8ee9 merge heads
 
   $ cd ..
 
@@ -156,36 +156,36 @@
 Newer draft heads don't impact output
 
   $ hg show stack
-    @  eaffc draft 2
-    o  2b218 draft 1
+    @  eaff draft 2
+    o  2b21 draft 1
    /   (stack base)
-  o  b66bb base
+  o  b66b base
 
 Newer public heads are rendered
 
   $ hg phase --public -r '::tip'
 
   $ hg show stack
-    o  baa4b new 2
+    o  baa4 new 2
    /    (2 commits ahead)
   :
   :    (stack head)
-  : @  eaffc draft 2
-  : o  2b218 draft 1
+  : @  eaff draft 2
+  : o  2b21 draft 1
   :/   (stack base)
-  o  b66bb base
+  o  b66b base
 
 If rebase is available, we show a hint how to rebase to that head
 
   $ hg --config extensions.rebase= show stack
-    o  baa4b new 2
-   /    (2 commits ahead; hg rebase --source 2b218 --dest baa4b)
+    o  baa4 new 2
+   /    (2 commits ahead; hg rebase --source 2b21 --dest baa4)
   :
   :    (stack head)
-  : @  eaffc draft 2
-  : o  2b218 draft 1
+  : @  eaff draft 2
+  : o  2b21 draft 1
   :/   (stack base)
-  o  b66bb base
+  o  b66b base
 
 Similar tests but for multiple heads
 
@@ -196,25 +196,25 @@
   $ hg -q up 2
 
   $ hg show stack
-    o  baa4b new 2
+    o  baa4 new 2
    /    (2 commits ahead)
-  : o  9a848 new head 2
+  : o  9a84 new head 2
   :/    (1 commits ahead)
   :
   :    (stack head)
-  : @  eaffc draft 2
-  : o  2b218 draft 1
+  : @  eaff draft 2
+  : o  2b21 draft 1
   :/   (stack base)
-  o  b66bb base
+  o  b66b base
 
   $ hg --config extensions.rebase= show stack
-    o  baa4b new 2
-   /    (2 commits ahead; hg rebase --source 2b218 --dest baa4b)
-  : o  9a848 new head 2
-  :/    (1 commits ahead; hg rebase --source 2b218 --dest 9a848)
+    o  baa4 new 2
+   /    (2 commits ahead; hg rebase --source 2b21 --dest baa4)
+  : o  9a84 new head 2
+  :/    (1 commits ahead; hg rebase --source 2b21 --dest 9a84)
   :
   :    (stack head)
-  : @  eaffc draft 2
-  : o  2b218 draft 1
+  : @  eaff draft 2
+  : o  2b21 draft 1
   :/   (stack base)
-  o  b66bb base
+  o  b66b base