From 8d5ccb59def8c1737b3e055a5984eaaa4e881ce9 Mon Sep 17 00:00:00 2001 From: Stefan Beller Date: Fri, 17 Aug 2018 13:43:53 -0700 Subject: range-diff: make use of different output indicators This change itself only changes the internal communication and should have no visible effect to the user. We instruct the diff code that produces the inner diffs to use other markers instead of the usual markers for new, old and context lines. Signed-off-by: Stefan Beller Signed-off-by: Junio C Hamano --- range-diff.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'range-diff.c') diff --git a/range-diff.c b/range-diff.c index b6b9abac26..a906d25f13 100644 --- a/range-diff.c +++ b/range-diff.c @@ -38,6 +38,14 @@ static int read_patches(const char *range, struct string_list *list) argv_array_pushl(&cp.args, "log", "--no-color", "-p", "--no-merges", "--reverse", "--date-order", "--decorate=no", + /* + * Choose indicators that are not used anywhere + * else in diffs, but still look reasonable + * (e.g. will not be confusing when debugging) + */ + "--output-indicator-new=>", + "--output-indicator-old=<", + "--output-indicator-context=#", "--no-abbrev-commit", range, NULL); cp.out = -1; @@ -108,8 +116,18 @@ static int read_patches(const char *range, struct string_list *list) * we are not interested. */ continue; - else + else if (line.buf[0] == '>') { + strbuf_addch(&buf, '+'); + strbuf_add(&buf, line.buf + 1, line.len - 1); + } else if (line.buf[0] == '<') { + strbuf_addch(&buf, '-'); + strbuf_add(&buf, line.buf + 1, line.len - 1); + } else if (line.buf[0] == '#') { + strbuf_addch(&buf, ' '); + strbuf_add(&buf, line.buf + 1, line.len - 1); + } else { strbuf_addbuf(&buf, &line); + } strbuf_addch(&buf, '\n'); util->diffsize++; -- cgit v1.3 From 2543a64187bb80078e493268e683cb0661be754f Mon Sep 17 00:00:00 2001 From: Stefan Beller Date: Fri, 17 Aug 2018 13:43:54 -0700 Subject: range-diff: indent special lines as context The range-diff coloring is a bit fuzzy when it comes to special lines of a diff, such as indicating new and old files with +++ and ---, as it would pickup the first character and interpret it for its coloring, which seems annoying as in regular diffs, these lines are colored bold via DIFF_METAINFO. By indenting these lines by a white space, they will be treated as context which is much more useful, an example [1] on the range diff series itself: [...] + diff --git a/Documentation/git-range-diff.txt b/Documentation/git-range-diff.txt + new file mode 100644 + --- /dev/null + +++ b/Documentation/git-range-diff.txt +@@ ++git-range-diff(1) [...] + diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile [...] The first lines that introduce the new file for the man page will have the '+' sign colored and the rest of the line will be bold. The later lines that indicate a change to the Makefile will be treated as context both in the outer and inner diff, such that those lines stay regular color. [1] ./git-range-diff pr-1/dscho/branch-diff-v3...pr-1/dscho/branch-diff-v4 These tags are found at https://github.com/gitgitgadget/git Signed-off-by: Stefan Beller Signed-off-by: Junio C Hamano --- range-diff.c | 2 ++ t/t3206-range-diff.sh | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'range-diff.c') diff --git a/range-diff.c b/range-diff.c index a906d25f13..3e9b984401 100644 --- a/range-diff.c +++ b/range-diff.c @@ -90,6 +90,7 @@ static int read_patches(const char *range, struct string_list *list) strbuf_addch(&buf, '\n'); if (!util->diff_offset) util->diff_offset = buf.len; + strbuf_addch(&buf, ' '); strbuf_addbuf(&buf, &line); } else if (in_header) { if (starts_with(line.buf, "Author: ")) { @@ -126,6 +127,7 @@ static int read_patches(const char *range, struct string_list *list) strbuf_addch(&buf, ' '); strbuf_add(&buf, line.buf + 1, line.len - 1); } else { + strbuf_addch(&buf, ' '); strbuf_addbuf(&buf, &line); } diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh index 7dc7c80a1d..c94f9bf5ee 100755 --- a/t/t3206-range-diff.sh +++ b/t/t3206-range-diff.sh @@ -133,9 +133,9 @@ test_expect_success 'changed message' ' Z + Also a silly comment here! + - Zdiff --git a/file b/file - Z--- a/file - Z+++ b/file + Z diff --git a/file b/file + Z --- a/file + Z +++ b/file 3: 147e64e = 3: b9cb956 s/11/B/ 4: a63e992 = 4: 8add5f1 s/12/B/ EOF @@ -152,9 +152,9 @@ test_expect_success 'dual-coloring' ' : : + Also a silly comment here! : + - : diff --git a/file b/file - : --- a/file - : +++ b/file + : diff --git a/file b/file + : --- a/file + : +++ b/file :3: 0559556 ! 3: b9cb956 s/11/B/ : @@ -10,7 +10,7 @@ : 9 -- cgit v1.3