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;