Jeff King <peff@xxxxxxxx> writes: > On Wed, Aug 05, 2020 at 01:06:51AM +0300, Sergey Organov wrote: > >> > For now, "off" is OK, but then we'll regret when "all" comes, >> > because "off" would not exactly sit opposite to "all". >> >> IMHO, "off" does not need to be opposite for "all", as it suppresses >> diff output altogether. I read --diff-merge=off as "turn /off/ diff >> output for merge commits". >> >> Besides, "all", that I don't like either, is among "c" and "cc", all 3 >> being different versions of diffs against all the parents, no? > > I think "all-parents" is much more descriptive than "all" (which might > make you think "all merges", but it has nothing to do with that). It > would make more sense if we later add the building to say "diff against > parent 1" or "diff against parents 1 and 3". > > You might also consider whether "combined" is actually mutually > exclusive with parent selection. We have focused on which parents you'd > want to "-m" against. But in the most general case, you could ask for a > combined-diff between parents 1 and 3 of an octopus merge. > > That's just coming from the angle of "what is the most general and > orthogonal set of features". I think the vast majority of what anyone > would want to do would be covered by doing a diff against only a single > parent, and then it would almost always be the first parent. And > certainly you'd need to add a bunch of code to the combined diff > machinery to make it support arbitrary sets of parents. So this probably > isn't that interesting a direction to go, at least for now. I'm just > raising the issue now because we'll be locked into the semantics of this > option, which may not be able to express the full set of what's possible > (so we'd be stuck adding another option later). Makes sense, and I got an idea. --diff-merges=<parent> will still give diff against one specific parent. In case of combined/separate diffs, it will produce diffs against all the parents that, if happens to be needed, could later be refined by a new --diff-parents option that defaults to 'all'. Then, for example, --diff-merges=1 would finally be just a short-cut for --diff-merges=separate --diff-parents=1 while --diff-merges=separate --diff-parents=all would be the same as --diff-merges=separate (what we called "all" so far) and then we may have --diff-merges=condensed-combined --diff-parents=1-3,8 for the bravest ;-) This would lead us, currently to: --diff-merges=(off,separate,combined,condensed-combined,<parent>) and leave us ability to implement advanced parents selection, in an unlikely case it's needed, in a separate new option. Thanks, -- Sergey