@@ -2843,12 +2843,19 @@ static int handle_renames(struct merge_options *o,
2843
2843
head_pairs = get_diffpairs (o , common , head );
2844
2844
merge_pairs = get_diffpairs (o , common , merge );
2845
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 );
2848
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
+ }
2852
2859
2853
2860
ri -> head_renames = get_renames (o , head_pairs ,
2854
2861
dir_re_merge , dir_re_head , head ,
@@ -3541,6 +3548,7 @@ void init_merge_options(struct merge_options *o)
3541
3548
o -> renormalize = 0 ;
3542
3549
o -> diff_detect_rename = -1 ;
3543
3550
o -> merge_detect_rename = -1 ;
3551
+ o -> detect_directory_renames = 1 ;
3544
3552
merge_recursive_config (o );
3545
3553
merge_verbosity = getenv ("GIT_MERGE_VERBOSITY" );
3546
3554
if (merge_verbosity )
0 commit comments