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

[PATCH 1/3] range-diff: move " ## filename ##" headers to the first column

From
Johannes Altmanninger <aclopte@gmail.com>
Date
Nov 17, 2020, 21:35 UTC
Message-ID
<20201117213551.2539438-2-aclopte@gmail.com>
In-Reply-To
<20201117213551.2539438-1-aclopte@gmail.com>

Output of range-diff may include comparisons of metadata like commit messages and filenames. Metadata lines look like " ## <content> ##".

When range-diff compares two matching commits, it computes a diff of two special commit diffs. In these commit diffs, each changed file is introduced with a " ## filename ##" line which is followed by the diff hunks with changes to the file's contents.

The leading space makes it hard to distinguish between file metadata lines
and context lines from a diff hunk, especially when looking only at the
output of range-diff.  Drop the space prefix to facilitate that.
---
 range-diff.c          |  4 ++--
 t/t3206-range-diff.sh | 42 +++++++++++++++++++++---------------------
 2 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/range-diff.c b/range-diff.c
index 24dc435e48..72660453bd 100644
--- a/range-diff.c
+++ b/range-diff.c
@@ -136,7 +136,7 @@ static int read_patches(const char *range, struct string_list *list,
 			if (len < 0)
 				die(_("could not parse git header '%.*s'"),
 				    orig_len, line);
-			strbuf_addstr(&buf, " ## ");
+			strbuf_addstr(&buf, "## ");
 			if (patch.is_new > 0)
 				strbuf_addf(&buf, "%s (new)", patch.new_name);
 			else if (patch.is_delete > 0)
@@ -432,7 +432,7 @@ static void output_pair_header(struct diff_options *diffopt,
 }
 
 static struct userdiff_driver section_headers = {
-	.funcname = { "^ ## (.*) ##$\n"
+	.funcname = { "^ ?## (.*) ##$\n"
 		      "^.?@@ (.*)$", REG_EXTENDED }
 };
 
diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh
index 6eb344be03..f875843b5e 100755
--- a/t/t3206-range-diff.sh
+++ b/t/t3206-range-diff.sh
@@ -304,8 +304,8 @@ test_expect_success 'renamed file' '
 	    -    s/4/A/
 	    +    s/4/A/ + rename file
 	    Z
-	    - ## file ##
-	    + ## file => renamed-file ##
+	    -## file ##
+	    +## file => renamed-file ##
 	    Z@@
 	    Z 1
 	    Z 2
@@ -314,9 +314,9 @@ test_expect_success 'renamed file' '
 	    Z ## Commit message ##
 	    Z    s/11/B/
 	    Z
-	    - ## file ##
+	    -## file ##
 	    -@@ file: A
-	    + ## renamed-file ##
+	    +## renamed-file ##
 	    +@@ renamed-file: A
 	    Z 8
 	    Z 9
@@ -326,9 +326,9 @@ test_expect_success 'renamed file' '
 	    Z ## Commit message ##
 	    Z    s/12/B/
 	    Z
-	    - ## file ##
+	    -## file ##
 	    -@@ file: A
-	    + ## renamed-file ##
+	    +## renamed-file ##
 	    +@@ renamed-file: A
 	    Z 9
 	    Z 10
@@ -348,14 +348,14 @@ test_expect_success 'file with mode only change' '
 	    -    s/4/A/
 	    +    s/4/A/ + add other-file
 	    Z
-	    Z ## file ##
+	    Z## file ##
 	    Z@@
 	    @@ file
 	    Z A
 	    Z 6
 	    Z 7
 	    +
-	    + ## other-file (new) ##
+	    +## other-file (new) ##
 	2:  $(test_oid t3) ! 2:  $(test_oid o2) s/11/B/
 	    @@ Metadata
 	    ZAuthor: Thomas Rast <trast@inf.ethz.ch>
@@ -364,14 +364,14 @@ test_expect_success 'file with mode only change' '
 	    -    s/11/B/
 	    +    s/11/B/ + mode change other-file
 	    Z
-	    Z ## file ##
+	    Z## file ##
 	    Z@@ file: A
 	    @@ file: A
 	    Z 12
 	    Z 13
 	    Z 14
 	    +
-	    + ## other-file (mode change 100644 => 100755) ##
+	    +## other-file (mode change 100644 => 100755) ##
 	3:  $(test_oid t4) = 3:  $(test_oid o3) s/12/B/
 	EOF
 	test_cmp expect actual
@@ -389,14 +389,14 @@ test_expect_success 'file added and later removed' '
 	    -    s/4/A/
 	    +    s/4/A/ + new-file
 	    Z
-	    Z ## file ##
+	    Z## file ##
 	    Z@@
 	    @@ file
 	    Z A
 	    Z 6
 	    Z 7
 	    +
-	    + ## new-file (new) ##
+	    +## new-file (new) ##
 	3:  $(test_oid t3) ! 3:  $(test_oid s3) s/11/B/
 	    @@ Metadata
 	    ZAuthor: Thomas Rast <trast@inf.ethz.ch>
@@ -405,14 +405,14 @@ test_expect_success 'file added and later removed' '
 	    -    s/11/B/
 	    +    s/11/B/ + remove file
 	    Z
-	    Z ## file ##
+	    Z## file ##
 	    Z@@ file: A
 	    @@ file: A
 	    Z 12
 	    Z 13
 	    Z 14
 	    +
-	    + ## new-file (deleted) ##
+	    +## new-file (deleted) ##
 	4:  $(test_oid t4) = 4:  $(test_oid s4) s/12/B/
 	EOF
 	test_cmp expect actual
@@ -434,7 +434,7 @@ test_expect_success 'changed message' '
 	    Z
 	    +    Also a silly comment here!
 	    +
-	    Z ## file ##
+	    Z## file ##
 	    Z@@
 	    Z 1
 	3:  $(test_oid t3) = 3:  $(test_oid m3) s/11/B/
@@ -453,7 +453,7 @@ test_expect_success 'dual-coloring' '
 	:     <RESET>
 	:    <REVERSE><GREEN>+<RESET><BOLD>    Also a silly comment here!<RESET>
 	:    <REVERSE><GREEN>+<RESET>
-	:      ## file ##<RESET>
+	:     ## file ##<RESET>
 	:    <CYAN> @@<RESET>
 	:      1<RESET>
 	:<RED>3:  $(test_oid c3) <RESET><YELLOW>!<RESET><GREEN> 3:  $(test_oid m3)<RESET><YELLOW> s/11/B/<RESET>
@@ -537,7 +537,7 @@ test_expect_success 'range-diff compares notes by default' '
 	    -    topic note
 	    +    unmodified note
 	    Z
-	    Z ## file ##
+	    Z## file ##
 	    Z@@ file: A
 	EOF
 	test_cmp expect actual
@@ -584,7 +584,7 @@ test_expect_success 'range-diff with multiple --notes' '
 	    -    topic note2
 	    +    unmodified note2
 	    Z
-	    Z ## file ##
+	    Z## file ##
 	    Z@@ file: A
 	EOF
 	test_cmp expect actual
@@ -645,7 +645,7 @@ test_expect_success 'format-patch --range-diff with --notes' '
 	    -    topic note
 	    +    unmodified note
 	    Z
-	    Z ## file ##
+	    Z## file ##
 	    Z@@ file: A
 	EOF
 	sed "/@@ Commit message/,/@@ file: A/!d" 0000-* >actual &&
@@ -674,7 +674,7 @@ test_expect_success 'format-patch --range-diff with format.notes config' '
 	    -    topic note
 	    +    unmodified note
 	    Z
-	    Z ## file ##
+	    Z## file ##
 	    Z@@ file: A
 	EOF
 	sed "/@@ Commit message/,/@@ file: A/!d" 0000-* >actual &&
@@ -710,7 +710,7 @@ test_expect_success 'format-patch --range-diff with multiple notes' '
 	    -    topic note2
 	    +    unmodified note2
 	    Z
-	    Z ## file ##
+	    Z## file ##
 	    Z@@ file: A
 	EOF
 	sed "/@@ Commit message/,/@@ file: A/!d" 0000-* >actual &&
-- 
2.29.2
Previous: Johannes AltmanningerNext: Johannes Altmanninger
Message 4 of 7 in “range-diff should suppress context-only changes?”
  1. Jeff KingNov 5, 2020
  2. Junio C HamanoNov 5, 2020
  3. Johannes AltmanningerNov 17, 2020
  4. 1/3 range-diff: move " ## filename ##" headers to the first columnJohannes Altmanninger, Nov 17, 2020
  5. 2/3 range-diff: ignore context-only changesJohannes Altmanninger, Nov 17, 2020
  6. Eric SunshineNov 17, 2020
  7. 3/3 range-diff: only compute patch diff when patches are differentJohannes Altmanninger, Nov 17, 2020

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.