range-diff: make --dual-color the default mode
After using this command extensively for the last two months, this developer came to the conclusion that even if the dual color mode still leaves a lot of room for confusion about what was actually changed, the non-dual color mode is substantially worse in that regard. Therefore, we really want to make the dual color mode the default. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d1f87a2d9c
commit
275267937b
@ -9,7 +9,7 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git range-diff' [--color=[<when>]] [--no-color] [<diff-options>]
|
'git range-diff' [--color=[<when>]] [--no-color] [<diff-options>]
|
||||||
[--dual-color] [--creation-factor=<factor>]
|
[--no-dual-color] [--creation-factor=<factor>]
|
||||||
( <range1> <range2> | <rev1>...<rev2> | <base> <rev1> <rev2> )
|
( <range1> <range2> | <rev1>...<rev2> | <base> <rev1> <rev2> )
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -31,11 +31,14 @@ all of their ancestors have been shown.
|
|||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
--dual-color::
|
--no-dual-color::
|
||||||
When the commit diffs differ, recreate the original diffs'
|
When the commit diffs differ, `git range-diff` recreates the
|
||||||
coloring, and add outer -/+ diff markers with the *background*
|
original diffs' coloring, and adds outer -/+ diff markers with
|
||||||
being red/green to make it easier to see e.g. when there was a
|
the *background* being red/green to make it easier to see e.g.
|
||||||
change in what exact lines were added.
|
when there was a change in what exact lines were added. This is
|
||||||
|
known to `range-diff` as "dual coloring". Use `--no-dual-color`
|
||||||
|
to revert to color all lines according to the outer diff markers
|
||||||
|
(and completely ignore the inner diff when it comes to color).
|
||||||
|
|
||||||
--creation-factor=<percent>::
|
--creation-factor=<percent>::
|
||||||
Set the creation/deletion cost fudge factor to `<percent>`.
|
Set the creation/deletion cost fudge factor to `<percent>`.
|
||||||
@ -118,15 +121,16 @@ line (with a perfect match) is yellow like the commit header of `git
|
|||||||
show`'s output, and the third line colors the old commit red, the new
|
show`'s output, and the third line colors the old commit red, the new
|
||||||
one green and the rest like `git show`'s commit header.
|
one green and the rest like `git show`'s commit header.
|
||||||
|
|
||||||
The color-coded diff is actually a bit hard to read, though, as it
|
A naive color-coded diff of diffs is actually a bit hard to read,
|
||||||
colors the entire lines red or green. The line that added "What is
|
though, as it colors the entire lines red or green. The line that added
|
||||||
unexpected" in the old commit, for example, is completely red, even if
|
"What is unexpected" in the old commit, for example, is completely red,
|
||||||
the intent of the old commit was to add something.
|
even if the intent of the old commit was to add something.
|
||||||
|
|
||||||
To help with that, use the `--dual-color` mode. In this mode, the diff
|
To help with that, `range` uses the `--dual-color` mode by default. In
|
||||||
of diffs will retain the original diff colors, and prefix the lines with
|
this mode, the diff of diffs will retain the original diff colors, and
|
||||||
-/+ markers that have their *background* red or green, to make it more
|
prefix the lines with -/+ markers that have their *background* red or
|
||||||
obvious that they describe how the diff itself changed.
|
green, to make it more obvious that they describe how the diff itself
|
||||||
|
changed.
|
||||||
|
|
||||||
|
|
||||||
Algorithm
|
Algorithm
|
||||||
|
@ -20,11 +20,11 @@ int cmd_range_diff(int argc, const char **argv, const char *prefix)
|
|||||||
{
|
{
|
||||||
int creation_factor = 60;
|
int creation_factor = 60;
|
||||||
struct diff_options diffopt = { NULL };
|
struct diff_options diffopt = { NULL };
|
||||||
int dual_color = 0;
|
int simple_color = -1;
|
||||||
struct option options[] = {
|
struct option options[] = {
|
||||||
OPT_INTEGER(0, "creation-factor", &creation_factor,
|
OPT_INTEGER(0, "creation-factor", &creation_factor,
|
||||||
N_("Percentage by which creation is weighted")),
|
N_("Percentage by which creation is weighted")),
|
||||||
OPT_BOOL(0, "dual-color", &dual_color,
|
OPT_BOOL(0, "no-dual-color", &simple_color,
|
||||||
N_("color both diff and diff-between-diffs")),
|
N_("color both diff and diff-between-diffs")),
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
@ -63,8 +63,10 @@ int cmd_range_diff(int argc, const char **argv, const char *prefix)
|
|||||||
options + ARRAY_SIZE(options) - 1, /* OPT_END */
|
options + ARRAY_SIZE(options) - 1, /* OPT_END */
|
||||||
builtin_range_diff_usage, 0);
|
builtin_range_diff_usage, 0);
|
||||||
|
|
||||||
if (dual_color) {
|
if (simple_color < 1) {
|
||||||
diffopt.use_color = 1;
|
if (!simple_color)
|
||||||
|
/* force color when --dual-color was used */
|
||||||
|
diffopt.use_color = 1;
|
||||||
diffopt.flags.dual_color_diffed_diffs = 1;
|
diffopt.flags.dual_color_diffed_diffs = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1981,7 +1981,7 @@ _git_range_diff ()
|
|||||||
case "$cur" in
|
case "$cur" in
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "
|
__gitcomp "
|
||||||
--creation-factor= --dual-color
|
--creation-factor= --no-dual-color
|
||||||
$__git_diff_common_options
|
$__git_diff_common_options
|
||||||
"
|
"
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user