Subject: Re: Diffing submodule does not yield complete logs for merge commits

From: Junio C Hamano <[email-masked]>
Date: Sat, 30 May 2015 12:54:20 -0700

Robert Dailey <[email-masked]> writes:

> On Sat, May 30, 2015 at 12:04 PM, Junio C Hamano <[email-masked]> wrote:
>> Robert Dailey <[email-masked]> writes:
>>
>>> In the meantime I'd like to ask, do we even need to add an option for
>>> this? What if we just make `diff.submodule log` not use
>>> --first-parent? This seems like a backward compatible change in of
>>> itself.
>>
>> Why?  People have relied on submodule-log not to include all the
>> noise coming from individual commits on side branches and instead
>> appreciated seeing only the overview by merges of side branch topics
>> being listed---why is regressing the system to inconvenience these
>> existing users "a backward compatible change"?
>
> Backward compatible in the sense that it does not break existing
> functionality....

And adding one-line-per-commit from side branches does break
existing functionality.  You seem to be arguing that more
information is always good and does not break existing
functionality, but summarizing by omitting irrelevant details *is* a
feature.  Do you honestly believe that a change to make the full
"log -p" output in submodule log be a "backward compatible" change??

>     > Merge branch "topic1" into "master"
>     > Merge branch "topic2" into "master"
>     > Merge branch "origin/develop" into "master"
>     > Merge branch "topic3" into "master"

It is not a real argument; it is something you can fix by naming
your branches more sensibly, which would make you a better developer
regardless of how submodule-log is shown.

>>> And it's simpler to implement. I can't think of a good
>>> justification to add more settings to an already hugely complex
>>> configuration scheme for such a minor difference in behavior.
>>
>> Careful, as that argument can cut both ways.  If it is so a minor
>> difference in behaviour, perhaps we can do without not just an
>> option but a feature to omit --first-parent here.  That would be
>> even simpler to implement, as you do not have to do anything.
>
> I don't really understand your contrasted example here. Can you explain:
>
>     "...we can do without not just an option but a feature to omit
> --first-parent..."

I am not sure how to phrase that any easier. Sorry.

Assuming that you consider output with and without --first-parent
does not make much of a difference (i.e. "minor difference in
behaviour"), instead of dropping --first-parent unconditionally,
like you seem to be pushing with the argument, we can
unconditionally keep the --first-parent and do not change anything.
The end result would not make much of a difference either way, and
not doing anything is much simpler than dropping --first-parent.

Hopefully you can see how absurd that line of reasoning is.  So do
not make the same argument to push for changing the behaviour
unconditionally.

If you think the new behaviour can help _some_ users, then you would
need the feature and a knob to enable it.