show-branch: show reflog message

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>
This commit is contained in:
Han-Wen Nienhuys 2021-12-02 17:36:29 +00:00 committed by Junio C Hamano
parent abe6bb3905
commit f2463490c4
2 changed files with 22 additions and 5 deletions

View file

@ -761,6 +761,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
char *logmsg; char *logmsg;
char *nth_desc; char *nth_desc;
const char *msg; const char *msg;
char *end;
timestamp_t timestamp; timestamp_t timestamp;
int tz; int tz;
@ -770,11 +771,12 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
reflog = i; reflog = i;
break; break;
} }
msg = strchr(logmsg, '\t');
if (!msg) end = strchr(logmsg, '\n');
msg = "(none)"; if (end)
else *end = '\0';
msg++;
msg = (*logmsg == '\0') ? "(none)" : logmsg;
reflog_msg[i] = xstrfmt("(%s) %s", reflog_msg[i] = xstrfmt("(%s) %s",
show_date(timestamp, tz, show_date(timestamp, tz,
DATE_MODE(RELATIVE)), DATE_MODE(RELATIVE)),

View file

@ -4,6 +4,9 @@ test_description='test show-branch'
. ./test-lib.sh . ./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_expect_success 'setup' '
test_commit initial && test_commit initial &&
for i in $(test_seq 1 10) 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_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 test_done