]> git.ipfire.org Git - thirdparty/git.git/commitdiff
range-diff: offer to dual-color the diffs
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Mon, 13 Aug 2018 11:33:22 +0000 (04:33 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Aug 2018 17:44:51 +0000 (10:44 -0700)
When showing what changed between old and new commits, we show a diff of
the patches. This diff is a diff between diffs, therefore there are
nested +/- signs, and it can be relatively hard to understand what is
going on.

With the --dual-color option, the preimage and the postimage are colored
like the diffs they are, and the *outer* +/- sign is inverted for
clarity.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/range-diff.c

index 76659d0b3f0385518aebc71500addc7124765d5e..5a9ad82fb888308d239cc636d4991ce5ee82a51f 100644 (file)
@@ -20,9 +20,12 @@ int cmd_range_diff(int argc, const char **argv, const char *prefix)
 {
        int creation_factor = 60;
        struct diff_options diffopt = { NULL };
+       int dual_color = 0;
        struct option options[] = {
                OPT_INTEGER(0, "creation-factor", &creation_factor,
                            N_("Percentage by which creation is weighted")),
+               OPT_BOOL(0, "dual-color", &dual_color,
+                           N_("color both diff and diff-between-diffs")),
                OPT_END()
        };
        int i, j, res = 0;
@@ -60,6 +63,11 @@ int cmd_range_diff(int argc, const char **argv, const char *prefix)
                             options + ARRAY_SIZE(options) - 1, /* OPT_END */
                             builtin_range_diff_usage, 0);
 
+       if (dual_color) {
+               diffopt.use_color = 1;
+               diffopt.flags.dual_color_diffed_diffs = 1;
+       }
+
        if (argc == 2) {
                if (!strstr(argv[0], ".."))
                        die(_("no .. in range: '%s'"), argv[0]);