add merge.renamelimit config option

The point of rename limiting is to bound the amount of time
we spend figuring out inexact renames. Currently we use a
single value, diff.renamelimit, for all situations. However,
it is probably the case that a user is willing to spend more
time finding renames during a merge than they are while
looking at git-log.

This patch provides a way of setting those values separately
(though for backwards compatibility, merge still falls back
on the diff renamelimit).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King
2008-04-30 13:23:55 -04:00
committed by Junio C Hamano
parent ec845695c4
commit 2a2ac92654
3 changed files with 88 additions and 3 deletions

View File

@ -92,7 +92,8 @@ static struct path_list current_directory_set = {NULL, 0, 0, 1};
static int call_depth = 0;
static int verbosity = 2;
static int rename_limit = -1;
static int diff_rename_limit = -1;
static int merge_rename_limit = -1;
static int buffer_output = 1;
static struct strbuf obuf = STRBUF_INIT;
@ -361,7 +362,9 @@ static struct path_list *get_renames(struct tree *tree,
diff_setup(&opts);
DIFF_OPT_SET(&opts, RECURSIVE);
opts.detect_rename = DIFF_DETECT_RENAME;
opts.rename_limit = rename_limit;
opts.rename_limit = merge_rename_limit >= 0 ? merge_rename_limit :
diff_rename_limit >= 0 ? diff_rename_limit :
100;
opts.output_format = DIFF_FORMAT_NO_OUTPUT;
if (diff_setup_done(&opts) < 0)
die("diff setup failed");
@ -1343,7 +1346,11 @@ static int merge_config(const char *var, const char *value)
return 0;
}
if (!strcasecmp(var, "diff.renamelimit")) {
rename_limit = git_config_int(var, value);
diff_rename_limit = git_config_int(var, value);
return 0;
}
if (!strcasecmp(var, "merge.renamelimit")) {
merge_rename_limit = git_config_int(var, value);
return 0;
}
return git_default_config(var, value);