Skip to content

Commit d2b11ec

Browse files
Felipe Gonçalves Assisgitster
authored andcommitted
merge-recursive: option to disable renames
The recursive strategy turns on rename detection by default. Add a strategy option to disable rename detection even for exact renames. Signed-off-by: Felipe Gonçalves Assis <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 7548842 commit d2b11ec

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

Documentation/merge-strategies.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,14 @@ no-renormalize;;
8181
Disables the `renormalize` option. This overrides the
8282
`merge.renormalize` configuration variable.
8383

84+
no-renames;;
85+
Turn off rename detection.
86+
See also linkgit:git-diff[1] `--no-renames`.
87+
8488
rename-threshold=<n>;;
8589
Controls the similarity threshold used for rename detection.
90+
Re-enables rename detection if disabled by a preceding
91+
`no-renames`.
8692
See also linkgit:git-diff[1] `-M`.
8793

8894
subtree[=<path>];;

merge-recursive.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,9 @@ static struct string_list *get_renames(struct merge_options *o,
482482
struct diff_options opts;
483483

484484
renames = xcalloc(1, sizeof(struct string_list));
485+
if (!o->detect_rename)
486+
return renames;
487+
485488
diff_setup(&opts);
486489
DIFF_OPT_SET(&opts, RECURSIVE);
487490
DIFF_OPT_CLR(&opts, RENAME_EMPTY);
@@ -2039,6 +2042,7 @@ void init_merge_options(struct merge_options *o)
20392042
o->diff_rename_limit = -1;
20402043
o->merge_rename_limit = -1;
20412044
o->renormalize = 0;
2045+
o->detect_rename = 1;
20422046
merge_recursive_config(o);
20432047
if (getenv("GIT_MERGE_VERBOSITY"))
20442048
o->verbosity =
@@ -2088,9 +2092,12 @@ int parse_merge_opt(struct merge_options *o, const char *s)
20882092
o->renormalize = 1;
20892093
else if (!strcmp(s, "no-renormalize"))
20902094
o->renormalize = 0;
2095+
else if (!strcmp(s, "no-renames"))
2096+
o->detect_rename = 0;
20912097
else if (skip_prefix(s, "rename-threshold=", &arg)) {
20922098
if ((o->rename_score = parse_rename_score(&arg)) == -1 || *arg != 0)
20932099
return -1;
2100+
o->detect_rename = 1;
20942101
}
20952102
else
20962103
return -1;

merge-recursive.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ struct merge_options {
1717
unsigned renormalize : 1;
1818
long xdl_opts;
1919
int verbosity;
20+
int detect_rename;
2021
int diff_rename_limit;
2122
int merge_rename_limit;
2223
int rename_score;

0 commit comments

Comments
 (0)