]> git.ipfire.org Git - thirdparty/git.git/commitdiff
show-branch: don't <COLOR></RESET> for space characters
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Thu, 17 Jun 2021 10:53:37 +0000 (12:53 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 28 Jun 2021 16:33:06 +0000 (09:33 -0700)
Change the colored output introduced in ab07ba2a24 (show-branch: color
the commit status signs, 2009-04-22) to not color and reset each
individual space character we use for padding. The intent is to color
just the "!", "+" etc. characters.

This makes the output easier to test, so let's do that now. The test
would be much more verbose without a color/reset for each space
character. Since the coloring cycles through colors we previously had
a "rainbow of space characters".

In theory this breaks things for anyone who's relying on the exact
colored output of show-branch, in practice I'd think anyone parsing it
isn't actively turning on the colored output.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/show-branch.c
t/t3202-show-branch.sh

index d6d2dabeca879638109a327eb4c96fbcbf0ecaf7..d77ce7aeb3824bb00bc068063672d60712c7827b 100644 (file)
@@ -939,9 +939,12 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
                                        mark = '*';
                                else
                                        mark = '+';
-                               printf("%s%c%s",
-                                      get_color_code(i),
-                                      mark, get_color_reset_code());
+                               if (mark == ' ')
+                                       putchar(mark);
+                               else
+                                       printf("%s%c%s",
+                                              get_color_code(i),
+                                              mark, get_color_reset_code());
                        }
                        putchar(' ');
                }
index 7b06048905a12d5d317f8b3d696aedb954d18683..54025f033792197ed73d3427d58c75fca119aaad 100755 (executable)
@@ -55,4 +55,34 @@ test_expect_success 'show-branch with showbranch.default' '
        test_cmp expect actual
 '
 
+test_expect_success 'show-branch --color output' '
+       sed "s/^> //" >expect <<-\EOF &&
+       > <RED>!<RESET> [branch1] branch1
+       >  <GREEN>!<RESET> [branch2] branch2
+       >   <YELLOW>!<RESET> [branch3] branch3
+       >    <BLUE>!<RESET> [branch4] branch4
+       >     <MAGENTA>!<RESET> [branch5] branch5
+       >      <CYAN>!<RESET> [branch6] branch6
+       >       <BOLD;RED>!<RESET> [branch7] branch7
+       >        <BOLD;GREEN>!<RESET> [branch8] branch8
+       >         <BOLD;YELLOW>!<RESET> [branch9] branch9
+       >          <BOLD;BLUE>*<RESET> [branch10] branch10
+       > ----------
+       >          <BOLD;BLUE>*<RESET> [branch10] branch10
+       >         <BOLD;YELLOW>+<RESET>  [branch9] branch9
+       >        <BOLD;GREEN>+<RESET>   [branch8] branch8
+       >       <BOLD;RED>+<RESET>    [branch7] branch7
+       >      <CYAN>+<RESET>     [branch6] branch6
+       >     <MAGENTA>+<RESET>      [branch5] branch5
+       >    <BLUE>+<RESET>       [branch4] branch4
+       >   <YELLOW>+<RESET>        [branch3] branch3
+       >  <GREEN>+<RESET>         [branch2] branch2
+       > <RED>+<RESET>          [branch1] branch1
+       > <RED>+<RESET><GREEN>+<RESET><YELLOW>+<RESET><BLUE>+<RESET><MAGENTA>+<RESET><CYAN>+<RESET><BOLD;RED>+<RESET><BOLD;GREEN>+<RESET><BOLD;YELLOW>+<RESET><BOLD;BLUE>*<RESET> [branch10^] initial
+       EOF
+       git show-branch --color=always $(cat branches.sorted) >actual.raw &&
+       test_decode_color <actual.raw >actual &&
+       test_cmp expect actual
+'
+
 test_done