"scissors" ("----- >8 -----") can be automatically added to commit messages by setting commit.verbose = true. Prevent this from interfering with trailer calculations by automatically skipping over scissors, instead of (usually) treating them as a comment. --- commit.c | 13 +++++++++---- t/t7513-interpret-trailers.sh | 17 +++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/commit.c b/commit.c index 041cfa5a9..9a7b41d09 100644 --- a/commit.c +++ b/commit.c @@ -1701,10 +1701,10 @@ int is_scissors_line(const char *line) /* * Inspect the given string and determine the true "end" of the log message, in * order to find where to put a new Signed-off-by: line. Ignored are - * trailing comment lines and blank lines, and also the traditional - * "Conflicts:" block that is not commented out, so that we can use - * "git commit -s --amend" on an existing commit that forgot to remove - * it. + * trailing comment lines and blank lines. To support "git commit -s + * --amend" on an existing commit, we also ignore "Conflicts:". To + * support "git commit -v", we truncate at "---- >8 ----" and similar + * scissors lines. * * Returns the number of bytes from the tail to ignore, to be fed as * the second parameter to append_signoff(). @@ -1723,6 +1723,11 @@ int ignore_non_trailer(const char *buf, size_t len) else next_line++; + if (is_scissors_line(&buf[bol])) { + if (!boc) + boc = bol; + break; + } if (buf[bol] == comment_line_char || buf[bol] == '\n') { /* is this the first of the run of comments? */ if (!boc) diff --git a/t/t7513-interpret-trailers.sh b/t/t7513-interpret-trailers.sh index 4dd1d7c52..d88d4a4ff 100755 --- a/t/t7513-interpret-trailers.sh +++ b/t/t7513-interpret-trailers.sh @@ -1258,4 +1258,21 @@ test_expect_success 'with no command and no key' ' test_cmp expected actual ' +test_expect_success 'with scissors' ' + cat >expected <<-EOF && + my subject + + review: Brian + sign: A U Thor <author@xxxxxxxxxxx> + # ------------------------ >8 ------------------------ + ignore this + EOF + git interpret-trailers --trailer review:Brian >actual <<-EOF && + my subject + # ------------------------ >8 ------------------------ + ignore this + EOF + test_cmp expected actual +' + test_done -- 2.12.3.3.g39c96af