range-diff: add headers to the outer hunk header
authorThomas Gummerer <t.gummerer@gmail.com>
Thu, 11 Jul 2019 16:08:51 +0000 (17:08 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 11 Jul 2019 21:29:27 +0000 (14:29 -0700)
Add the section headers/hunk headers we introduced in the previous
commits to the outer diff's hunk headers. This makes it easier to
understand which change we are actually looking at. For example an
outer hunk header might now look like:

@@ Documentation/config/interactive.txt

while previously it would have only been

@@

which doesn't give a lot of context for the change that follows.

For completeness also add section headers for the commit metadata and
the commit message, although they are arguably less important.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
range-diff.c
t/t3206-range-diff.sh
index 7a96a587f1f378ce25c2d1dc1491ec841e276e99..ba1e9a4265a6cb3e6ae77b2f32f9fd64bee04cc6 100644 (file)
@@ -139,8 +139,10 @@ static int read_patches(const char *range, struct string_list *list)
                        strbuf_addstr(&buf, " ##");
                } else if (in_header) {
                        if (starts_with(line, "Author: ")) {
+                               strbuf_addstr(&buf, " ## Metadata ##\n");
                                strbuf_addstr(&buf, line);
                                strbuf_addstr(&buf, "\n\n");
+                               strbuf_addstr(&buf, " ## Commit message ##\n");
                        } else if (starts_with(line, "    ")) {
                                p = line + len - 2;
                                while (isspace(*p) && p >= line)
@@ -402,8 +404,9 @@ static void output_pair_header(struct diff_options *diffopt,
        fwrite(buf->buf, buf->len, 1, diffopt->file);
 }
 
-static struct userdiff_driver no_func_name = {
-       .funcname = { "$^", 0 }
+static struct userdiff_driver section_headers = {
+       .funcname = { "^ ## (.*) ##$\n"
+                     "^.?@@ (.*)$", REG_EXTENDED }
 };
 
 static struct diff_filespec *get_filespec(const char *name, const char *p)
@@ -415,7 +418,7 @@ static struct diff_filespec *get_filespec(const char *name, const char *p)
        spec->size = strlen(p);
        spec->should_munmap = 0;
        spec->is_stdin = 1;
-       spec->driver = &no_func_name;
+       spec->driver = &section_headers;
 
        return spec;
 }
index d4de270979ec8b7e9f6a1fd018c5297c82462e59..ec548654ce1cae8773ad642877e525896a6b54f4 100755 (executable)
@@ -99,7 +99,7 @@ test_expect_success 'changed commit' '
        1:  4de457d = 1:  a4b3333 s/5/A/
        2:  fccce22 = 2:  f51d370 s/4/A/
        3:  147e64e ! 3:  0559556 s/11/B/
-           @@
+           @@ file: A
              9
              10
             -11
@@ -109,7 +109,7 @@ test_expect_success 'changed commit' '
              13
              14
        4:  a63e992 ! 4:  d966c5c s/12/B/
-           @@
+           @@ file
             @@ file: A
              9
              10
@@ -158,7 +158,7 @@ test_expect_success 'changed commit with sm config' '
        1:  4de457d = 1:  a4b3333 s/5/A/
        2:  fccce22 = 2:  f51d370 s/4/A/
        3:  147e64e ! 3:  0559556 s/11/B/
-           @@
+           @@ file: A
              9
              10
             -11
@@ -168,7 +168,7 @@ test_expect_success 'changed commit with sm config' '
              13
              14
        4:  a63e992 ! 4:  d966c5c s/12/B/
-           @@
+           @@ file
             @@ file: A
              9
              10
@@ -186,9 +186,10 @@ test_expect_success 'renamed file' '
        sed s/Z/\ /g >expected <<-EOF &&
        1:  4de457d = 1:  f258d75 s/5/A/
        2:  fccce22 ! 2:  017b62d s/4/A/
-           @@
+           @@ Metadata
            ZAuthor: Thomas Rast <trast@inf.ethz.ch>
            Z
+           Z ## Commit message ##
            -    s/4/A/
            +    s/4/A/ + rename file
            Z
@@ -198,8 +199,8 @@ test_expect_success 'renamed file' '
            Z 1
            Z 2
        3:  147e64e ! 3:  3ce7af6 s/11/B/
-           @@
-           Z
+           @@ Metadata
+           Z ## Commit message ##
            Z    s/11/B/
            Z
            - ## file ##
@@ -210,8 +211,8 @@ test_expect_success 'renamed file' '
            Z 9
            Z 10
        4:  a63e992 ! 4:  1e6226b s/12/B/
-           @@
-           Z
+           @@ Metadata
+           Z ## Commit message ##
            Z    s/12/B/
            Z
            - ## file ##
@@ -230,30 +231,32 @@ test_expect_success 'file added and later removed' '
        sed s/Z/\ /g >expected <<-EOF &&
        1:  4de457d = 1:  096b1ba s/5/A/
        2:  fccce22 ! 2:  d92e698 s/4/A/
-           @@
+           @@ Metadata
            ZAuthor: Thomas Rast <trast@inf.ethz.ch>
            Z
+           Z ## Commit message ##
            -    s/4/A/
            +    s/4/A/ + new-file
            Z
            Z ## file ##
            Z@@
-           @@
+           @@ file
            Z A
            Z 6
            Z 7
            +
            + ## new-file (new) ##
        3:  147e64e ! 3:  9a1db4d s/11/B/
-           @@
+           @@ Metadata
            ZAuthor: Thomas Rast <trast@inf.ethz.ch>
            Z
+           Z ## Commit message ##
            -    s/11/B/
            +    s/11/B/ + remove file
            Z
            Z ## file ##
            Z@@ file: A
-           @@
+           @@ file: A
            Z 12
            Z 13
            Z 14
@@ -274,8 +277,8 @@ test_expect_success 'changed message' '
        sed s/Z/\ /g >expected <<-EOF &&
        1:  4de457d = 1:  f686024 s/5/A/
        2:  fccce22 ! 2:  4ab067d s/4/A/
-           @@
-           Z
+           @@ Metadata
+           Z ## Commit message ##
            Z    s/4/A/
            Z
            +    Also a silly comment here!
@@ -293,8 +296,8 @@ test_expect_success 'dual-coloring' '
        sed -e "s|^:||" >expect <<-\EOF &&
        :<YELLOW>1:  a4b3333 = 1:  f686024 s/5/A/<RESET>
        :<RED>2:  f51d370 <RESET><YELLOW>!<RESET><GREEN> 2:  4ab067d<RESET><YELLOW> s/4/A/<RESET>
-       :    <REVERSE><CYAN>@@<RESET>
-       :     <RESET>
+       :    <REVERSE><CYAN>@@<RESET> <RESET>Metadata<RESET>
+       :      ## Commit message ##<RESET>
        :         s/4/A/<RESET>
        :     <RESET>
        :    <REVERSE><GREEN>+<RESET><BOLD>    Also a silly comment here!<RESET>
@@ -303,7 +306,7 @@ test_expect_success 'dual-coloring' '
        :    <CYAN> @@<RESET>
        :      1<RESET>
        :<RED>3:  0559556 <RESET><YELLOW>!<RESET><GREEN> 3:  b9cb956<RESET><YELLOW> s/11/B/<RESET>
-       :    <REVERSE><CYAN>@@<RESET>
+       :    <REVERSE><CYAN>@@<RESET> <RESET>file: A<RESET>
        :      9<RESET>
        :      10<RESET>
        :    <RED> -11<RESET>
@@ -313,7 +316,7 @@ test_expect_success 'dual-coloring' '
        :      13<RESET>
        :      14<RESET>
        :<RED>4:  d966c5c <RESET><YELLOW>!<RESET><GREEN> 4:  8add5f1<RESET><YELLOW> s/12/B/<RESET>
-       :    <REVERSE><CYAN>@@<RESET>
+       :    <REVERSE><CYAN>@@<RESET> <RESET>file<RESET>
        :    <CYAN> @@ file: A<RESET>
        :      9<RESET>
        :      10<RESET>