merge-recursive: add ability to turn off directory rename detection

Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Elijah Newren committed Aug 29, 2018 at 00:06 UTC 5fdddd9b757a50c9a583936e7e6e44ec96d2d651
2 files changed +14 -5
merge-recursive.c
+13 -5
@@ -2843,12 +2843,19 @@ static int handle_renames(struct merge_options *o,
2843 head_pairs = get_diffpairs(o, common, head);
2844 merge_pairs = get_diffpairs(o, common, merge);
2845
2846 - dir_re_head = get_directory_renames(head_pairs, head);
2847 - dir_re_merge = get_directory_renames(merge_pairs, merge);
2846 + if (o->detect_directory_renames) {
2847 + dir_re_head = get_directory_renames(head_pairs, head);
2848 + dir_re_merge = get_directory_renames(merge_pairs, merge);
2849
2849 - handle_directory_level_conflicts(o,
2850 - dir_re_head, head,
2851 - dir_re_merge, merge);
2850 + handle_directory_level_conflicts(o,
2851 + dir_re_head, head,
2852 + dir_re_merge, merge);
2853 + } else {
2854 + dir_re_head = xmalloc(sizeof(*dir_re_head));
2855 + dir_re_merge = xmalloc(sizeof(*dir_re_merge));
2856 + dir_rename_init(dir_re_head);
2857 + dir_rename_init(dir_re_merge);
2858 + }
2859
2860 ri->head_renames = get_renames(o, head_pairs,
2861 dir_re_merge, dir_re_head, head,
@@ -3541,6 +3548,7 @@ void init_merge_options(struct merge_options *o)
3548 o->renormalize = 0;
3549 o->diff_detect_rename = -1;
3550 o->merge_detect_rename = -1;
3551 + o->detect_directory_renames = 1;
3552 merge_recursive_config(o);
3553 merge_verbosity = getenv("GIT_MERGE_VERBOSITY");
3554 if (merge_verbosity)
merge-recursive.h
+1
@@ -18,6 +18,7 @@ struct merge_options {
18 unsigned renormalize : 1;
19 long xdl_opts;
20 int verbosity;
21 + int detect_directory_renames;
22 int diff_detect_rename;
23 int merge_detect_rename;
24 int diff_rename_limit;