Junio C Hamano <gitster@xxxxxxxxx> writes: > "Felipe Gonçalves Assis" <felipeg.assis@xxxxxxxxx> writes: > >> +no-renames;; >> + Turn off rename detection. >> + See also linkgit:git-diff[1] `--no-renames`. > > Even though by default for merge-recursive the rename detection is > on, if we are adding an option to control this aspect of the > behaviour from the command line, it should follow the usual pattern, > i.e. > > (1) the code to parse options would allow an earlier "--no-renames" > on the command line to be overridden with a later "--renames"; and > > (2) the description in the documentation would be headed by > "--[no-]renames", describes which one is the default, etc. > >> diff --git a/merge-recursive.c b/merge-recursive.c >> index 8eabde2..ca67805 100644 >> --- a/merge-recursive.c >> +++ b/merge-recursive.c >> @@ -1839,9 +1839,16 @@ int merge_trees(struct merge_options *o, >> >> entries = get_unmerged(); >> record_df_conflict_files(o, entries); >> - re_head = get_renames(o, head, common, head, merge, entries); >> - re_merge = get_renames(o, merge, common, head, merge, entries); >> - clean = process_renames(o, re_head, re_merge); >> + if (o->detect_rename) { >> + re_head = get_renames(o, head, common, head, merge, entries); >> + re_merge = get_renames(o, merge, common, head, merge, entries); >> + clean = process_renames(o, re_head, re_merge); >> + } >> + else { >> + re_head = xcalloc(1, sizeof(struct string_list)); >> + re_merge = xcalloc(1, sizeof(struct string_list)); >> + clean = 1; >> + } > > Yup, this is much nicer than butchering diffcore-rename.c for no > good reason ;-). Thinking about this a bit deeper, you are already passing o to get_renames, so I think the right place to decide "Oh, I can just return an empty list" is inside that function. That is, the meat of the change in this patch should be just these three lines instead, I think. You'd of course need to have addition of that new field, option parsing, and documentation update in addition to that. Thanks. merge-recursive.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/merge-recursive.c b/merge-recursive.c index 8eabde2..69fb947 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -482,6 +482,9 @@ static struct string_list *get_renames(struct merge_options *o, struct diff_options opts; renames = xcalloc(1, sizeof(struct string_list)); + if (!o->detect_rename) + return renames; + diff_setup(&opts); DIFF_OPT_SET(&opts, RECURSIVE); DIFF_OPT_CLR(&opts, RENAME_EMPTY); -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html