Sergey Organov <sorganov@xxxxxxxxx> writes: >> We need to note that the "-m" implied by "--first-parent" is "if we >> were to show some comparison, do so also for merge commits", not the >> "if the user says '-m', it must mean that the user wants to see >> comparison, period, so make it imply '-p'". The latter is what was >> reverted. > > Yes, there is minor backward incompatibility indeed, and that was > expected. This could be seen from the patch in the same series that > fixes "git stash" by removing unneeded -m. > > The fix for the scripts is as simple as removing -m from "--first-parent > -m". It's a one-time change. > ... >> I agree that we both (and if there were other reviewers, they too) >> mistakenly thought that the change in behaviour was innocuous enough >> when we queued the patch, but our mistakes were caught while the >> topic was still cooking in 'next', and I have Jonathan to thank for >> being extra careful. > > So, what would be the procedure to get this change back, as this minor > backward incompatibility shouldn't be the show-stopper for the change > that otherwise is an improvement? Your repeating "minor" does not make it minor. Anything you force existing users and scripts to change is "fixing the scripts", but "working around the breakage you brought to them", which is closer to being a show-stopper. I understand that you like this feature a lot, but you'd need to be a bit more considerate to your users and other people. I think it is a design mistake to make a plain vanilla "-m" to imply "-p" (or any "output of result of comparison"), simply because the implication goes in the other direction, so there will never be "get this change back", period, but see below. "git log" when showing a commit and asked to "output result of comparison" like patch, combined diff, raw diff, etc. would: - show the comparison for non-merge commits and when "--first-parent" is specified (the latter is natural since it makes us consistently pretend that the merges were squash merges). - shows the comparison for merge commits when -m is given. but because "--cc" and "-c" (which are used to specify how the result of comparison is shown; they are not about specifying if "normally we show only non-merges" is disabled) do not make sense in the context of non-merge commits (in other words, the user is better off giving "-p" if merges are not to be shown), they are made to imply "-m". And that is a sensible design choice. On the other hand, "--raw" (which is used to specify how the result of comparison is shown; it not about specifying if "normally we show only non-merges" is disabled) does make sense in the context of non-merge commits, so unlike "--cc"/"-c", it does not imply "-m". And that also is a sensible design choice. "-p" falls into the same bucket as "--raw", so it should not imply "-m". But some folks may not like "log -p" to be silent about comparison for merge commits (like you are). To accomodate them, it might make sense to have a configuration that says "I like -m, so when -p or --raw or any 'how to show comparison result' option is given, please make it imply '-m'", but it should not be the default. Thanks.