Sergey Organov wrote: > diff --git a/log-tree.c b/log-tree.c > index f9385b1dae6f..9f50a81e537e 100644 > --- a/log-tree.c > +++ b/log-tree.c > @@ -899,15 +899,21 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log > int showed_log; > struct commit_list *parents; > struct object_id *oid; > + int is_merge; > + int all_need_diff = opt->diff || opt->diffopt.flags.exit_with_status; > > - if (!opt->diff && !opt->diffopt.flags.exit_with_status) > + if (!all_need_diff && !opt->merges_need_diff) > return 0; > > parse_commit_or_die(commit); > oid = get_commit_tree_oid(commit); > > - /* Root commit? */ > parents = get_saved_parents(opt, commit); > + is_merge = parents && parents->next; > + if (!is_merge && !all_need_diff) > + return 0; > + > + /* Root commit? */ > if (!parents) { > if (opt->show_root_diff) { > diff_root_tree_oid(oid, "", &opt->diffopt); FWIW this logic does make sense to me. -- Felipe Contreras