Skip to content

Commit

Permalink
Merge branch 'la/trailer-cleanups'
Browse files Browse the repository at this point in the history
Fix to an already-graduated topic.

* la/trailer-cleanups:
  trailer: fix comment/cut-line regression with opts->no_divider
  • Loading branch information
gitster committed Feb 20, 2024
2 parents 96c8a07 + bc47139 commit 58aa645
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 8 deletions.
18 changes: 18 additions & 0 deletions t/t7502-commit-porcelain.sh
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,24 @@ test_expect_success 'commit --trailer not confused by --- separator' '
test_cmp expected actual
'

test_expect_success 'commit --trailer with --verbose' '
cat >msg <<-\EOF &&
subject
body
EOF
GIT_EDITOR=: git commit --edit -F msg --allow-empty \
--trailer="my-trailer: value" --verbose &&
{
cat msg &&
echo &&
echo "my-trailer: value"
} >expected &&
git cat-file commit HEAD >commit.msg &&
sed -e "1,/^\$/d" commit.msg >actual &&
test_cmp expected actual
'

test_expect_success 'multiple -m' '
>negative &&
Expand Down
19 changes: 19 additions & 0 deletions t/t7513-interpret-trailers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1916,4 +1916,23 @@ test_expect_success 'suppress --- handling' '
test_cmp expected actual
'

test_expect_success 'suppressing --- does not disable cut-line handling' '
echo "real-trailer: before the cut" >expected &&
git interpret-trailers --parse --no-divider >actual <<-\EOF &&
subject
This input has a cut-line in it; we should stop parsing when we see it
and consider only trailers before that line.
real-trailer: before the cut
# ------------------------ >8 ------------------------
# Nothing below this line counts as part of the commit message.
not-a-trailer: too late
EOF
test_cmp expected actual
'

test_done
15 changes: 7 additions & 8 deletions trailer.c
Original file line number Diff line number Diff line change
Expand Up @@ -845,16 +845,15 @@ static size_t find_end_of_log_message(const char *input, int no_divider)
/* Assume the naive end of the input is already what we want. */
end = strlen(input);

if (no_divider)
return end;

/* Optionally skip over any patch part ("---" line and below). */
for (s = input; *s; s = next_line(s)) {
const char *v;
if (!no_divider) {
for (s = input; *s; s = next_line(s)) {
const char *v;

if (skip_prefix(s, "---", &v) && isspace(*v)) {
end = s - input;
break;
if (skip_prefix(s, "---", &v) && isspace(*v)) {
end = s - input;
break;
}
}
}

Expand Down

0 comments on commit 58aa645

Please sign in to comment.