Re: [PATCH v2 0/7] making log --first-parent imply -m
From: Sergey Organov <hidden>
Date: 2020-08-04 22:54:00
Jeff King [off-list ref] writes:
On Wed, Aug 05, 2020 at 01:06:51AM +0300, Sergey Organov wrote:quoted
quoted
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