Browse Source

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>
maint
Eric Wong 19 years ago committed by Junio C Hamano
parent
commit
b68ea12e30
  1. 5
      Documentation/config.txt
  2. 14
      diff.c

5
Documentation/config.txt

@ -114,6 +114,11 @@ diff.renameLimit:: @@ -114,6 +114,11 @@ diff.renameLimit::
The number of files to consider when performing the copy/rename
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::
Additional email headers to include in a patch to be submitted
by mail. See gitlink:git-format-patch[1].

14
diff.c

@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@

static int use_size_cache;

static int diff_detect_rename_default = 0;
static int diff_rename_limit_default = -1;
static int diff_use_color_default = 0;

@ -120,6 +121,16 @@ int git_diff_config(const char *var, const char *value) @@ -120,6 +121,16 @@ int git_diff_config(const char *var, const char *value)
diff_use_color_default = git_config_bool(var, value);
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)) {
int slot = parse_diff_color_slot(var, 11);
diff_colors[slot] = parse_diff_color_value(value, var);
@ -1431,6 +1442,7 @@ void diff_setup(struct diff_options *options) @@ -1431,6 +1442,7 @@ void diff_setup(struct diff_options *options)
options->change = diff_change;
options->add_remove = diff_addremove;
options->color_diff = diff_use_color_default;
options->detect_rename = diff_detect_rename_default;
}

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) @@ -1617,6 +1629,8 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
options->xdl_opts |= XDF_IGNORE_WHITESPACE;
else if (!strcmp(arg, "-b") || !strcmp(arg, "--ignore-space-change"))
options->xdl_opts |= XDF_IGNORE_WHITESPACE_CHANGE;
else if (!strcmp(arg, "--no-renames"))
options->detect_rename = 0;
else
return 0;
return 1;

Loading…
Cancel
Save