range-diff: add filename to inner diff
In a range-diff it's not always clear which file a certain funcname of the inner diff belongs to, because the diff header (or section header as added in a previous commit) is not always visible in the range-diff. Add the filename to the inner diffs header, so it's always visible to users. This also allows us to add the filename + the funcname to the outer diffs hunk headers using a custom userdiff pattern, which will be done in the next commit. Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b66885a30c
commit
444e0969ba
15
range-diff.c
15
range-diff.c
@ -46,7 +46,7 @@ static int read_patches(const char *range, struct string_list *list)
|
||||
struct strbuf buf = STRBUF_INIT, contents = STRBUF_INIT;
|
||||
struct patch_util *util = NULL;
|
||||
int in_header = 1;
|
||||
char *line;
|
||||
char *line, *current_filename = NULL;
|
||||
int offset, len;
|
||||
size_t size;
|
||||
|
||||
@ -125,6 +125,12 @@ static int read_patches(const char *range, struct string_list *list)
|
||||
else
|
||||
strbuf_addstr(&buf, patch.new_name);
|
||||
|
||||
free(current_filename);
|
||||
if (patch.is_delete > 0)
|
||||
current_filename = xstrdup(patch.old_name);
|
||||
else
|
||||
current_filename = xstrdup(patch.new_name);
|
||||
|
||||
if (patch.new_mode && patch.old_mode &&
|
||||
patch.old_mode != patch.new_mode)
|
||||
strbuf_addf(&buf, " (mode change %06o => %06o)",
|
||||
@ -145,7 +151,11 @@ static int read_patches(const char *range, struct string_list *list)
|
||||
continue;
|
||||
} else if (skip_prefix(line, "@@ ", &p)) {
|
||||
p = strstr(p, "@@");
|
||||
strbuf_addstr(&buf, p ? p : "@@");
|
||||
strbuf_addstr(&buf, "@@");
|
||||
if (current_filename && p[2])
|
||||
strbuf_addf(&buf, " %s:", current_filename);
|
||||
if (p)
|
||||
strbuf_addstr(&buf, p + 2);
|
||||
} else if (!line[0])
|
||||
/*
|
||||
* A completely blank (not ' \n', which is context)
|
||||
@ -177,6 +187,7 @@ static int read_patches(const char *range, struct string_list *list)
|
||||
if (util)
|
||||
string_list_append(list, buf.buf)->util = util;
|
||||
strbuf_release(&buf);
|
||||
free(current_filename);
|
||||
|
||||
if (finish_command(&cp))
|
||||
return -1;
|
||||
|
@ -110,7 +110,7 @@ test_expect_success 'changed commit' '
|
||||
14
|
||||
4: a63e992 ! 4: d966c5c s/12/B/
|
||||
@@
|
||||
@@ A
|
||||
@@ file: A
|
||||
9
|
||||
10
|
||||
- B
|
||||
@ -169,7 +169,7 @@ test_expect_success 'changed commit with sm config' '
|
||||
14
|
||||
4: a63e992 ! 4: d966c5c s/12/B/
|
||||
@@
|
||||
@@ A
|
||||
@@ file: A
|
||||
9
|
||||
10
|
||||
- B
|
||||
@ -203,20 +203,24 @@ test_expect_success 'renamed file' '
|
||||
Z s/11/B/
|
||||
Z
|
||||
- ## file ##
|
||||
-@@ file: A
|
||||
+ ## renamed-file ##
|
||||
Z@@ A
|
||||
+@@ renamed-file: A
|
||||
Z 8
|
||||
Z 9
|
||||
Z 10
|
||||
4: a63e992 ! 4: 1e6226b s/12/B/
|
||||
@@
|
||||
Z
|
||||
Z s/12/B/
|
||||
Z
|
||||
- ## file ##
|
||||
-@@ file: A
|
||||
+ ## renamed-file ##
|
||||
Z@@ A
|
||||
+@@ renamed-file: A
|
||||
Z 9
|
||||
Z 10
|
||||
Z B
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
@ -248,7 +252,7 @@ test_expect_success 'file added and later removed' '
|
||||
+ s/11/B/ + remove file
|
||||
Z
|
||||
Z ## file ##
|
||||
Z@@ A
|
||||
Z@@ file: A
|
||||
@@
|
||||
Z 12
|
||||
Z 13
|
||||
@ -310,7 +314,7 @@ test_expect_success 'dual-coloring' '
|
||||
: 14<RESET>
|
||||
:<RED>4: d966c5c <RESET><YELLOW>!<RESET><GREEN> 4: 8add5f1<RESET><YELLOW> s/12/B/<RESET>
|
||||
: <REVERSE><CYAN>@@<RESET>
|
||||
: <CYAN> @@ A<RESET>
|
||||
: <CYAN> @@ file: A<RESET>
|
||||
: 9<RESET>
|
||||
: 10<RESET>
|
||||
: <REVERSE><RED>-<RESET><FAINT> BB<RESET>
|
||||
|
Loading…
Reference in New Issue
Block a user