I am experimenting with a version of submodule diff (using log style) that prints the commits brought in from merges, while excluding the merge commits themselves. This is useful in cases where a merge commit's summary does not fully explain the changes being merged (for example, for longer-lived branches). I could have gone through the effort to make this more configurable, but before doing that level of work I wanted to get some discussion going to understand first if this is a useful change and second how it should be configured. For example, we could allow: $ git diff --submodule=long-log Or a supplementary option such as: $ git diff --submodule=log --submodule-log-detail=(long|short) I'm not sure what makes sense here. I welcome thoughts/discussion and will provide follow-up patches. Signed-off-by: Robert Dailey <rcdailey@xxxxxxxxx> --- submodule.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/submodule.c b/submodule.c index 2967704317..a0a62ad7bd 100644 --- a/submodule.c +++ b/submodule.c @@ -428,7 +428,8 @@ static int prepare_submodule_summary(struct rev_info *rev, const char *path, init_revisions(rev, NULL); setup_revisions(0, NULL, rev, NULL); rev->left_right = 1; - rev->first_parent_only = 1; + rev->max_parents = 1; + rev->first_parent_only = 0; left->object.flags |= SYMMETRIC_LEFT; add_pending_object(rev, &left->object, path); add_pending_object(rev, &right->object, path); -- 2.13.1.windows.2