]> git.ipfire.org Git - thirdparty/git.git/commitdiff
show-branch: show reflog message
authorHan-Wen Nienhuys <hanwen@google.com>
Thu, 2 Dec 2021 17:36:29 +0000 (17:36 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 2 Dec 2021 19:14:07 +0000 (11:14 -0800)
Before, --reflog option would look for '\t' in the reflog message. As refs.c
already parses the reflog line, the '\t' was never found, and show-branch
--reflog would always say "(none)" as reflog message

Add test.

Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/show-branch.c
t/t3202-show-branch.sh

index 082449293b56388456520cbc67ef873ed3dc767a..f1e8318592cebc11f5f69ce798a0f5a3e6494ce4 100644 (file)
@@ -761,6 +761,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
                        char *logmsg;
                        char *nth_desc;
                        const char *msg;
+                       char *end;
                        timestamp_t timestamp;
                        int tz;
 
@@ -770,11 +771,12 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
                                reflog = i;
                                break;
                        }
-                       msg = strchr(logmsg, '\t');
-                       if (!msg)
-                               msg = "(none)";
-                       else
-                               msg++;
+
+                       end = strchr(logmsg, '\n');
+                       if (end)
+                               *end = '\0';
+
+                       msg = (*logmsg == '\0') ? "(none)" : logmsg;
                        reflog_msg[i] = xstrfmt("(%s) %s",
                                                show_date(timestamp, tz,
                                                          DATE_MODE(RELATIVE)),
index ad9902a06b9f20d9e4d86b676e30fdd906835e67..d4d64401e4b08f0bebd62ba5191310a6b173b80b 100755 (executable)
@@ -4,6 +4,9 @@ test_description='test show-branch'
 
 . ./test-lib.sh
 
+# arbitrary reference time: 2009-08-30 19:20:00
+GIT_TEST_DATE_NOW=1251660000; export GIT_TEST_DATE_NOW
+
 test_expect_success 'setup' '
        test_commit initial &&
        for i in $(test_seq 1 10)
@@ -146,4 +149,16 @@ test_expect_success 'show branch --merge-base with N arguments' '
        test_cmp expect actual
 '
 
+test_expect_success 'show branch --reflog=2' '
+       sed "s/^>       //" >expect <<-\EOF &&
+       >       ! [refs/heads/branch10@{0}] (4 years, 5 months ago) commit: branch10
+       >        ! [refs/heads/branch10@{1}] (4 years, 5 months ago) commit: branch10
+       >       --
+       >       +  [refs/heads/branch10@{0}] branch10
+       >       ++ [refs/heads/branch10@{1}] initial
+       EOF
+       git show-branch --reflog=2 >actual &&
+       test_cmp actual expect
+'
+
 test_done