git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] commit.c: skip scissors when computing trailers

From
Brian Malehorn <bmalehorn@gmail.com>
Date
May 12, 2017, 05:03 UTC
Message-ID
<20170512050347.30765-4-bmalehorn@gmail.com>
In-Reply-To
<20170512050347.30765-1-bmalehorn@gmail.com>
"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@example.com>
+		# ------------------------ >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
Previous: Jeff KingNext: Jeff King
Message 23 of 24 in “interpret-trailers + commit -v bugfix”
  1. 0/3 interpret-trailers + commit -v bugfixBrian Malehorn, May 12, 2017
  2. 2/3 commit.c: add is_scissors_lineBrian Malehorn, May 12, 2017
  3. Jeff KingMay 12, 2017
  4. Jeff KingMay 12, 2017
  5. Brian MalehornMay 14, 2017
  6. interpret-trailers: obey scissors linesBrian Malehorn, May 14, 2017
  7. Jeff KingMay 14, 2017
  8. Brian MalehornMay 14, 2017
  9. interpret-trailers: obey scissors linesBrian Malehorn, May 14, 2017
  10. Junio C HamanoMay 15, 2017
  11. Junio C HamanoMay 15, 2017
  12. Brian MalehornMay 16, 2017
  13. interpret-trailers: honor the cut lineBrian Malehorn, May 16, 2017
  14. Junio C HamanoMay 16, 2017
  15. Jeff KingMay 15, 2017
  16. Junio C HamanoMay 15, 2017
  17. Jeff KingMay 15, 2017
  18. Junio C HamanoMay 15, 2017
  19. Jeff KingMay 15, 2017
  20. Ævar Arnfjörð BjarmasonMay 14, 2017
  21. 1/3 mailinfo.c: is_scissors_line ends on newlineBrian Malehorn, May 12, 2017
  22. Jeff KingMay 12, 2017
  23. 3/3 commit.c: skip scissors when computing trailersBrian Malehorn, May 12, 2017
  24. Jeff KingMay 12, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.