diff.c: respect diff.renames config option
diff.renames is mentioned several times in the documentation, but to my surprise it didn't do anything before this patch. Also add the --no-renames option to override this from the command-line. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:

committed by
Junio C Hamano

parent
d507bb1500
commit
b68ea12e30
@ -114,6 +114,11 @@ diff.renameLimit::
|
|||||||
The number of files to consider when performing the copy/rename
|
The number of files to consider when performing the copy/rename
|
||||||
detection; equivalent to the git diff option '-l'.
|
detection; equivalent to the git diff option '-l'.
|
||||||
|
|
||||||
|
diff.renames::
|
||||||
|
Tells git to detect renames. If set to any boolean value, it
|
||||||
|
will enable basic rename detection. If set to "copies" or
|
||||||
|
"copy", it will detect copies, as well.
|
||||||
|
|
||||||
format.headers::
|
format.headers::
|
||||||
Additional email headers to include in a patch to be submitted
|
Additional email headers to include in a patch to be submitted
|
||||||
by mail. See gitlink:git-format-patch[1].
|
by mail. See gitlink:git-format-patch[1].
|
||||||
|
14
diff.c
14
diff.c
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
static int use_size_cache;
|
static int use_size_cache;
|
||||||
|
|
||||||
|
static int diff_detect_rename_default = 0;
|
||||||
static int diff_rename_limit_default = -1;
|
static int diff_rename_limit_default = -1;
|
||||||
static int diff_use_color_default = 0;
|
static int diff_use_color_default = 0;
|
||||||
|
|
||||||
@ -120,6 +121,16 @@ int git_diff_config(const char *var, const char *value)
|
|||||||
diff_use_color_default = git_config_bool(var, value);
|
diff_use_color_default = git_config_bool(var, value);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
if (!strcmp(var, "diff.renames")) {
|
||||||
|
if (!value)
|
||||||
|
diff_detect_rename_default = DIFF_DETECT_RENAME;
|
||||||
|
else if (!strcasecmp(value, "copies") ||
|
||||||
|
!strcasecmp(value, "copy"))
|
||||||
|
diff_detect_rename_default = DIFF_DETECT_COPY;
|
||||||
|
else if (git_config_bool(var,value))
|
||||||
|
diff_detect_rename_default = DIFF_DETECT_RENAME;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if (!strncmp(var, "diff.color.", 11)) {
|
if (!strncmp(var, "diff.color.", 11)) {
|
||||||
int slot = parse_diff_color_slot(var, 11);
|
int slot = parse_diff_color_slot(var, 11);
|
||||||
diff_colors[slot] = parse_diff_color_value(value, var);
|
diff_colors[slot] = parse_diff_color_value(value, var);
|
||||||
@ -1431,6 +1442,7 @@ void diff_setup(struct diff_options *options)
|
|||||||
options->change = diff_change;
|
options->change = diff_change;
|
||||||
options->add_remove = diff_addremove;
|
options->add_remove = diff_addremove;
|
||||||
options->color_diff = diff_use_color_default;
|
options->color_diff = diff_use_color_default;
|
||||||
|
options->detect_rename = diff_detect_rename_default;
|
||||||
}
|
}
|
||||||
|
|
||||||
int diff_setup_done(struct diff_options *options)
|
int diff_setup_done(struct diff_options *options)
|
||||||
@ -1617,6 +1629,8 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
|
|||||||
options->xdl_opts |= XDF_IGNORE_WHITESPACE;
|
options->xdl_opts |= XDF_IGNORE_WHITESPACE;
|
||||||
else if (!strcmp(arg, "-b") || !strcmp(arg, "--ignore-space-change"))
|
else if (!strcmp(arg, "-b") || !strcmp(arg, "--ignore-space-change"))
|
||||||
options->xdl_opts |= XDF_IGNORE_WHITESPACE_CHANGE;
|
options->xdl_opts |= XDF_IGNORE_WHITESPACE_CHANGE;
|
||||||
|
else if (!strcmp(arg, "--no-renames"))
|
||||||
|
options->detect_rename = 0;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
return 1;
|
return 1;
|
||||||
|
Reference in New Issue
Block a user