Hi Elijah, On Wed, 29 Aug 2018, Elijah Newren wrote:
> Signed-off-by: Elijah Newren <new...@gmail.com> > --- > merge-recursive.c | 18 +++++++++++++----- > merge-recursive.h | 1 + > 2 files changed, 14 insertions(+), 5 deletions(-) > > diff --git a/merge-recursive.c b/merge-recursive.c > index f110e1c5ec..bf3cb03d3a 100644 > --- a/merge-recursive.c > +++ b/merge-recursive.c > @@ -2843,12 +2843,19 @@ static int handle_renames(struct merge_options *o, > head_pairs = get_diffpairs(o, common, head); > merge_pairs = get_diffpairs(o, common, merge); > > - dir_re_head = get_directory_renames(head_pairs, head); > - dir_re_merge = get_directory_renames(merge_pairs, merge); > + if (o->detect_directory_renames) { > + dir_re_head = get_directory_renames(head_pairs, head); > + dir_re_merge = get_directory_renames(merge_pairs, merge); > > - handle_directory_level_conflicts(o, > - dir_re_head, head, > - dir_re_merge, merge); > + handle_directory_level_conflicts(o, > + dir_re_head, head, > + dir_re_merge, merge); > + } else { > + dir_re_head = xmalloc(sizeof(*dir_re_head)); > + dir_re_merge = xmalloc(sizeof(*dir_re_merge)); This is not a suggestion to change anything, but a genuine question out of curiosity: would it make sense to put the `dir_re_head` and `dir_re_merge` structures into `struct merge_options` to avoid these extra `malloc()`s? Or would that cause issues with the recursive nature of the recursive merge? Ciao, Dscho > + dir_rename_init(dir_re_head); > + dir_rename_init(dir_re_merge); > + } > > ri->head_renames = get_renames(o, head_pairs, > dir_re_merge, dir_re_head, head, > @@ -3541,6 +3548,7 @@ void init_merge_options(struct merge_options *o) > o->renormalize = 0; > o->diff_detect_rename = -1; > o->merge_detect_rename = -1; > + o->detect_directory_renames = 1; > merge_recursive_config(o); > merge_verbosity = getenv("GIT_MERGE_VERBOSITY"); > if (merge_verbosity) > diff --git a/merge-recursive.h b/merge-recursive.h > index fa7bc6b683..e39ee5d78b 100644 > --- a/merge-recursive.h > +++ b/merge-recursive.h > @@ -18,6 +18,7 @@ struct merge_options { > unsigned renormalize : 1; > long xdl_opts; > int verbosity; > + int detect_directory_renames; > int diff_detect_rename; > int merge_detect_rename; > int diff_rename_limit; > -- > 2.18.0.12.g97a29da30a > >