git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v1 00/27] git-log: implement new --diff-merge options

From
Sergey Organov <sorganov@gmail.com>
Date
Dec 5, 2020, 19:44 UTC
Message-ID
<878sacjaws.fsf@osv.gnss.ru>
In-Reply-To
<CABPp-BFB9aaJV1uvYk1QQ6E8zQ=_Jv6KhHb1grA5+Bh+qsTG8g@mail.gmail.com>
Elijah Newren <newren@gmail.com> writes:
Show 129 quoted lines
> On Fri, Dec 4, 2020 at 11:23 AM Sergey Organov <sorganov@gmail.com> wrote:
>>
>> Elijah Newren <newren@gmail.com> writes:
>>
>> > On Thu, Dec 3, 2020 at 11:48 AM Sergey Organov <sorganov@gmail.com> wrote:
>> >>
>> >> Elijah Newren <newren@gmail.com> writes:
>> >>
>> >> > On Sun, Nov 8, 2020 at 1:43 PM Sergey Organov
>> >> > <sorganov@gmail.com> wrote:
>> >> >>
>> >> >> These patch series implement new set of options governing the
>> >> >> diff output
>> >> >> of merge commits, all under the umbrella of the single
>> >> >> --diff-merges=<mode>
>> >> >> option. Most of the new options being synonyms for -m/-c/--cc options,
>> >> >> there is also additional functionality provided, allowing to get
>> >> >> the format
>> >> >> of "-p --first-parent" without change in history traversal that
>> >> >> --first-parent option causes.
>> >> >>
>> >> >> The net result of these series are the following new options:
>> >> >>
>> >> >> --diff-merges=   |  old equivalent
>> >> >> -----------------+----------------
>> >> >> first-parent     | --first-parent (only format implications)
>> >> >> separate         | -m
>> >> >> combined         | -c
>> >> >> dense-combined   | --cc
>> >> >
>> >> > Interesting.  I have some local patches implementing another choice,
>> >> > with the new flag --remerge-diff.  This flag will cause `git show` or
>> >> > `git log` to automatically remerge the two parents in a 2-parent merge
>> >> > commit, and then diff the merge commit against that automatic merge,
>> >> > showing the result.  Thus, the diff for a merge commit is likely to be
>> >> > empty if the merge was clean, and is likely to show the removal of
>> >> > conflict markers if the merge was not clean.
>> >> >
>> >> > I'm curious how it'd interact with this new option.  Would it also get
>> >> > a name, e.g. --diff-merges=remerge-diff?  Feels like a mouthful, but I
>> >> > can't come up with anything better.
>> >>
>> >> Maybe, --diff-merges=remerge?
>> >>
>> >> >
>> >> > Also, I'm curious how it'd interact with another option I added, named
>> >> > --remerge-diff-only.  This latter option modifies revision traversal
>> >> > in that it skips octopus merges, root commits, and single parent
>> >> > commits IF no cherry-pick or revert information can be found.  If it
>> >> > finds a 2-parent merge commit, it behaves like --remerge-diff.  If it
>> >> > finds a 1-parent commit with cherry-pick or revert information, it'll
>> >> > do an in memory repeat of that cherry-pick (or revert) and then diff
>> >> > the actual commit against what the automatic cherry-pick would
>> >> > perform.  Again, that likely means an empty diff if the automatic
>> >> > cherry-pick was clean, and showing any changes made by the user to
>> >> > complete the original cherry-pick (such as deleting conflict markers
>> >> > and picking which chunks from which side to keep) if the automatic
>> >> > cherry-pick was not clean.  (I suspect --remerge-diff-only is much
>> >> > more likely to be used with `git show` than with `git log`.)  Anyway,
>> >> > your changes seem to suggest that anything relating to how diffs for
>> >> > merges are handled should be documented in the same section, but
>> >> > --remerge-diff-only doesn't fit.  And it'd seem odd to have
>> >> > --remerge-diff and --remerge-diff-only not show up in adjacently but
>> >> > be split into separate sections.  Any ideas?
>> >>
>> >> Sounds like commits limiting option to me. I think it could be named by
>> >> its limiting behavior only, say, --remerges. Then it will imply
>> >> --diff-merges=remerge, that'd allow user to re-define diff format if she
>> >> needs to.
>> >
>> > It is commit limiting, but the focus is more on the behavioral change
>> > in how diffs are shown:
>> >   * for 2-parent merges
>> >   * for single-parent commits with cherry-pick or revert information
>> > and acknowledging that since it has _altered_ the normal way of
>> > showing diffs for a number of single-parent commits, that it'd be
>> > confusing to show normal diffs of unaffected commits (how would you be
>> > able to tell what type of diff you're looking at if both appear in the
>> > log?).  Thus, it does commit limiting to only select commits which
>> > will make use of the new diff type.
>>
>> That's how you currently look at it.
>>
>> For me it looks like pure commit limiting with these criteria might be
>> useful by itself, and with my suggestion one could then achieve it
>> using, say:
>>
>> --remerge-diff-only --diff-merges=off
>
> I see what you're saying, and I think there's some value in it.  But I
> think there's something still missing.  For example, you suggest
> getting the commit limiting I mention with
>
>     --remerge-diff-only --diff-merges=off
>
> But --diff-merges is only supposed to control _merge_ commits, which I
> flagged as the big impedance mismatch for my new option.  Why would it
> turn off diffs for non-merge commits like cherry-picks and rebases?
>
>> >
>> > (I suspect it will be more common for folks to use the
>> > --remerge-diff-only option, or whatever we end up calling it, with
>> > `git show` where the commit limiting doesn't matter -- but I have used
>> > it with log to go looking for "evil" reverts/cherry-picks that might
>> > have occurred in history.)
>>
>> What you describe is complex enough to doubt it could be entirely
>> described by option name, so shorter --evils might be better choice
>> in this case.
>>
>> Overall, if you add --diff-merges=remerge as a new diff format, and then
>> --evils that implies the former, then it seems like all possible
>> use-cases will be covered, and you have short option name for the most
>> useful case.
>
> Since you want things to have orthogonal subcomponents that can be
> built up, let's assume we did make --remerge-diff-only be solely about
> commit limiting.  In that case, --evils could be gotten by specifying
> a combination of flags, and --evils would just be a shorthand.  What
> are the flags that you would need to specify, though?  In particular,
> you've only named two options above and they don't cover the necessary
> behavior; a third is needed:
>
>    --remerge-diff-only --diff-merges=remerge
> --${DIFF_OPTION_NAME_FOR_CHERRY_PICKS_AND_REVERTS}=remerge
>
> The first two aren't enough because --diff_merges only changes how
> diffs for _merge_ commits are shown, and we need a flag for changing
> how the single-parent cherry-pick and reverts are shown.

Yeah, I see your point. I didn't get it from the beginning that you want yet another representation format for regular commits as well. However, as far as I can tell, if --evils flag is active, you do consider cherry-picks and reverts as kind of merges, that makes sense as they actually /are/ expected to be results of specific /merge operation/, even though they are not /merge commits/, so semantically they do have second parent reference (to the original commit), even if a virtual one.

To further illustrate my point, reverts and cherry-picks could have been implemented, for example, as merge commits with, say, 3-rd parent pointing back to the original commit (not 2-nd parent, both to differentiate from regular merges and to support cherry-picking of merge commits.)

As a side-note, people rarely differentiate between "merge-the-operation" and "merge-the-result" anyway, even when it leads to confusion.

Overall, if we take the above into account, it seems to be fine if --diff-merges does affect the representation or such "quasi-merge" commits, for the purposes of --evils option.

-- Sergey Organov
Previous: Elijah NewrenNext: Elijah Newren
Message 96 of 232 in “git-log: implement new --diff-merge options”
  1. 00/26 git-log: implement new --diff-merge optionsSergey Organov, Nov 1, 2020
  2. 02/26 revision: factor out setup of diff-merge related settingsSergey Organov, Nov 1, 2020
  3. 03/26 revision: factor out initialization of diff-merge related settingsSergey Organov, Nov 1, 2020
  4. 01/26 revision: factor out parsing of diff-merge related optionsSergey Organov, Nov 1, 2020
  5. 05/26 revision: move diff merges functions to its own diff-merges.cSergey Organov, Nov 1, 2020
  6. 04/26 revision: provide implementation for diff merges tweaksSergey Organov, Nov 1, 2020
  7. 06/26 diff-merges: rename all functions to have common prefixSergey Organov, Nov 1, 2020
  8. 08/26 diff-merges: rename diff_merges_default_to_enable() to match semanticsSergey Organov, Nov 1, 2020
  9. 10/26 diff-merges: new function diff_merges_suppress()Sergey Organov, Nov 1, 2020
  10. Elijah NewrenDec 3, 2020
  11. Sergey OrganovDec 3, 2020
  12. Elijah NewrenDec 3, 2020
  13. Sergey OrganovDec 4, 2020
  14. 07/26 diff-merges: move checks for first_parent_only out of the moduleSergey Organov, Nov 1, 2020
  15. 13/26 diff-merges: revise revs->diff flag handlingSergey Organov, Nov 1, 2020
  16. 12/26 diff-merges: introduce revs->first_parent_merges flagSergey Organov, Nov 1, 2020
  17. 11/26 diff-merges: new function diff_merges_set_dense_combined_if_unset()Sergey Organov, Nov 1, 2020
  18. 18/26 diff-merges: group diff-merge flags next to each other inside 'rev_info'Sergey Organov, Nov 1, 2020
  19. 20/26 diff-merges: refactor opt settings into separate functionsSergey Organov, Nov 1, 2020
  20. 21/26 diff-merges: make -m/-c/--cc explicitly mutually exclusiveSergey Organov, Nov 1, 2020
  21. 19/26 diff-merges: get rid of now empty diff_merges_init_revs()Sergey Organov, Nov 1, 2020
  22. Philip OakleyNov 2, 2020
  23. 22/26 diff-merges: implement new values for --diff-mergesSergey Organov, Nov 1, 2020
  24. 09/26 diff-merges: re-arrange functions to match the order they are called inSergey Organov, Nov 1, 2020
  25. 23/26 t4013: add test for --diff-merges=first-parentSergey Organov, Nov 1, 2020
  26. 25/26 doc/diff-generate-patch: mention new --diff-merges optionSergey Organov, Nov 1, 2020
  27. 24/26 doc/git-log: describe new --diff-merges optionsSergey Organov, Nov 1, 2020
  28. 17/26 diff-merges: split 'ignore_merges' fieldSergey Organov, Nov 1, 2020
  29. Philip OakleyNov 2, 2020
  30. Sergey OrganovNov 2, 2020
  31. 16/26 diff-merges: fix -m to properly override -c/--ccSergey Organov, Nov 1, 2020
  32. 26/26 doc/rev-list-options: document --first-parent implies --diff-merges=first-parentSergey Organov, Nov 1, 2020
  33. 15/26 t4013: add tests for -m failing to override -c/--ccSergey Organov, Nov 1, 2020
  34. 14/26 t4013: support test_expect_failure through ':failure' magicSergey Organov, Nov 1, 2020
  35. 00/27 git-log: implement new --diff-merge optionsSergey Organov, Nov 8, 2020
  36. 01/27 revision: factor out parsing of diff-merge related optionsSergey Organov, Nov 8, 2020
  37. Junio C HamanoDec 3, 2020
  38. Sergey OrganovDec 3, 2020
  39. Junio C HamanoDec 4, 2020
  40. Sergey OrganovDec 4, 2020
  41. 02/27 revision: factor out setup of diff-merge related settingsSergey Organov, Nov 8, 2020
  42. Junio C HamanoDec 3, 2020
  43. 03/27 revision: factor out initialization of diff-merge related settingsSergey Organov, Nov 8, 2020
  44. Junio C HamanoDec 3, 2020
  45. Sergey OrganovDec 3, 2020
  46. 05/27 revision: move diff merges functions to its own diff-merges.cSergey Organov, Nov 8, 2020
  47. Junio C HamanoDec 3, 2020
  48. Sergey OrganovDec 3, 2020
  49. 04/27 revision: provide implementation for diff merges tweaksSergey Organov, Nov 8, 2020
  50. Junio C HamanoDec 3, 2020
  51. Junio C HamanoDec 3, 2020
  52. Sergey OrganovDec 3, 2020
  53. Sergey OrganovDec 3, 2020
  54. 07/27 diff-merges: move checks for first_parent_only out of the moduleSergey Organov, Nov 8, 2020
  55. Junio C HamanoDec 3, 2020
  56. Sergey OrganovDec 3, 2020
  57. 09/27 diff-merges: re-arrange functions to match the order they are called inSergey Organov, Nov 8, 2020
  58. Elijah NewrenDec 3, 2020
  59. Sergey OrganovDec 3, 2020
  60. 10/27 diff-merges: new function diff_merges_suppress()Sergey Organov, Nov 8, 2020
  61. 08/27 diff-merges: rename diff_merges_default_to_enable() to match semanticsSergey Organov, Nov 8, 2020
  62. 11/27 diff-merges: new function diff_merges_set_dense_combined_if_unset()Sergey Organov, Nov 8, 2020
  63. 12/27 diff-merges: introduce revs->first_parent_merges flagSergey Organov, Nov 8, 2020
  64. 13/27 diff-merges: revise revs->diff flag handlingSergey Organov, Nov 8, 2020
  65. 19/27 diff-merges: get rid of now empty diff_merges_init_revs()Sergey Organov, Nov 8, 2020
  66. 21/27 diff-merges: make -m/-c/--cc explicitly mutually exclusiveSergey Organov, Nov 8, 2020
  67. 20/27 diff-merges: refactor opt settings into separate functionsSergey Organov, Nov 8, 2020
  68. 23/27 t4013: add test for --diff-merges=first-parentSergey Organov, Nov 8, 2020
  69. 24/27 doc/git-log: describe new --diff-merges optionsSergey Organov, Nov 8, 2020
  70. Elijah NewrenDec 3, 2020
  71. Sergey OrganovDec 3, 2020
  72. Elijah NewrenDec 3, 2020
  73. Sergey OrganovDec 4, 2020
  74. Elijah NewrenDec 4, 2020
  75. Sergey OrganovDec 4, 2020
  76. Elijah NewrenDec 4, 2020
  77. 22/27 diff-merges: implement new values for --diff-mergesSergey Organov, Nov 8, 2020
  78. 26/27 doc/rev-list-options: document --first-parent implies --diff-merges=first-parentSergey Organov, Nov 8, 2020
  79. 27/27 doc/git-show: include --diff-merges descriptionSergey Organov, Nov 8, 2020
  80. Elijah NewrenDec 3, 2020
  81. Sergey OrganovDec 3, 2020
  82. 18/27 diff-merges: group diff-merge flags next to each other inside 'rev_info'Sergey Organov, Nov 8, 2020
  83. 25/27 doc/diff-generate-patch: mention new --diff-merges optionSergey Organov, Nov 8, 2020
  84. 17/27 diff-merges: split 'ignore_merges' fieldSergey Organov, Nov 8, 2020
  85. 14/27 t4013: support test_expect_failure through ':failure' magicSergey Organov, Nov 8, 2020
  86. 06/27 diff-merges: rename all functions to have common prefixSergey Organov, Nov 8, 2020
  87. Junio C HamanoDec 3, 2020
  88. Sergey OrganovDec 3, 2020
  89. 15/27 t4013: add tests for -m failing to override -c/--ccSergey Organov, Nov 8, 2020
  90. 16/27 diff-merges: fix -m to properly override -c/--ccSergey Organov, Nov 8, 2020
  91. Elijah NewrenDec 3, 2020
  92. Sergey OrganovDec 3, 2020
  93. Elijah NewrenDec 3, 2020
  94. Sergey OrganovDec 4, 2020
  95. Elijah NewrenDec 5, 2020
  96. Sergey OrganovDec 5, 2020
  97. Elijah NewrenDec 5, 2020
  98. Sergey OrganovDec 6, 2020
  99. Sergey OrganovDec 8, 2020
  100. Elijah NewrenDec 8, 2020
  101. Sergey OrganovDec 8, 2020
  102. Elijah NewrenDec 8, 2020
  103. Junio C HamanoDec 9, 2020
  104. Elijah NewrenDec 9, 2020
  105. Junio C HamanoDec 9, 2020
  106. Elijah NewrenDec 9, 2020
  107. Junio C HamanoDec 9, 2020
  108. Elijah NewrenDec 9, 2020
  109. Junio C HamanoDec 9, 2020
  110. Junio C HamanoDec 9, 2020
  111. Sergey OrganovDec 9, 2020
  112. Junio C HamanoDec 9, 2020
  113. Sergey OrganovDec 9, 2020
  114. Junio C HamanoDec 10, 2020
  115. Elijah NewrenDec 10, 2020
  116. Sergey OrganovDec 10, 2020
  117. Junio C HamanoDec 10, 2020
  118. Junio C HamanoDec 10, 2020
  119. Sergey OrganovDec 9, 2020
  120. 00/33 git-log: implement new --diff-merge optionsSergey Organov, Dec 16, 2020
  121. 01/33 revision: factor out parsing of diff-merge related optionsSergey Organov, Dec 16, 2020
  122. 02/33 revision: factor out setup of diff-merge related settingsSergey Organov, Dec 16, 2020
  123. 04/33 revision: provide implementation for diff merges tweaksSergey Organov, Dec 16, 2020
  124. 03/33 revision: factor out initialization of diff-merge related settingsSergey Organov, Dec 16, 2020
  125. 05/33 revision: move diff merges functions to its own diff-merges.cSergey Organov, Dec 16, 2020
  126. 06/33 diff-merges: rename all functions to have common prefixSergey Organov, Dec 16, 2020
  127. 08/33 diff-merges: rename diff_merges_default_to_enable() to match semanticsSergey Organov, Dec 16, 2020
  128. 07/33 diff-merges: move checks for first_parent_only out of the moduleSergey Organov, Dec 16, 2020
  129. 10/33 diff-merges: new function diff_merges_suppress()Sergey Organov, Dec 16, 2020
  130. 09/33 diff-merges: re-arrange functions to match the order they are called inSergey Organov, Dec 16, 2020
  131. 11/33 diff-merges: new function diff_merges_set_dense_combined_if_unset()Sergey Organov, Dec 16, 2020
  132. 13/33 diff-merges: revise revs->diff flag handlingSergey Organov, Dec 16, 2020
  133. 12/33 diff-merges: introduce revs->first_parent_merges flagSergey Organov, Dec 16, 2020
  134. 14/33 t4013: support test_expect_failure through ':failure' magicSergey Organov, Dec 16, 2020
  135. 15/33 t4013: add tests for -m failing to override -c/--ccSergey Organov, Dec 16, 2020
  136. 16/33 diff-merges: fix -m to properly override -c/--ccSergey Organov, Dec 16, 2020
  137. 20/33 diff-merges: refactor opt settings into separate functionsSergey Organov, Dec 16, 2020
  138. 19/33 diff-merges: get rid of now empty diff_merges_init_revs()Sergey Organov, Dec 16, 2020
  139. 23/33 diff-merges: fix style of functions definitionsSergey Organov, Dec 16, 2020
  140. Elijah NewrenDec 18, 2020
  141. Sergey OrganovDec 18, 2020
  142. Elijah NewrenDec 18, 2020
  143. Sergey OrganovDec 18, 2020
  144. Elijah NewrenDec 18, 2020
  145. Felipe ContrerasDec 19, 2020
  146. Sergey OrganovDec 19, 2020
  147. Sergey OrganovDec 20, 2020
  148. Felipe ContrerasDec 21, 2020
  149. Junio C HamanoDec 19, 2020
  150. 24/33 diff-merges: handle imply -p on -c/--cc logic for log.cSergey Organov, Dec 16, 2020
  151. Elijah NewrenDec 18, 2020
  152. Sergey OrganovDec 18, 2020
  153. Elijah NewrenDec 18, 2020
  154. Sergey OrganovDec 18, 2020
  155. Elijah NewrenDec 18, 2020
  156. Sergey OrganovDec 18, 2020
  157. 28/33 diff-merges: add '--diff-merges=1' as synonym for 'first-parent'Sergey Organov, Dec 16, 2020
  158. Elijah NewrenDec 18, 2020
  159. Sergey OrganovDec 18, 2020
  160. 27/33 diff-merges: add old mnemonic counterparts to --diff-mergesSergey Organov, Dec 16, 2020
  161. 31/33 doc/rev-list-options: document --first-parent changes merges formatSergey Organov, Dec 16, 2020
  162. 30/33 doc/diff-generate-patch: mention new --diff-merges optionSergey Organov, Dec 16, 2020
  163. 18/33 diff-merges: group diff-merge flags next to each other inside 'rev_info'Sergey Organov, Dec 16, 2020
  164. 17/33 diff-merges: split 'ignore_merges' fieldSergey Organov, Dec 16, 2020
  165. 21/33 diff-merges: make -m/-c/--cc explicitly mutually exclusiveSergey Organov, Dec 16, 2020
  166. 26/33 diff-merges: let new options enable diff without -pSergey Organov, Dec 16, 2020
  167. Elijah NewrenDec 18, 2020
  168. Sergey OrganovDec 18, 2020
  169. Elijah NewrenDec 18, 2020
  170. Sergey OrganovDec 18, 2020
  171. Elijah NewrenDec 18, 2020
  172. Sergey OrganovDec 18, 2020
  173. Sergey OrganovDec 18, 2020
  174. Sergey OrganovDec 19, 2020
  175. Felipe ContrerasDec 19, 2020
  176. Sergey OrganovDec 19, 2020
  177. Sergey OrganovDec 20, 2020
  178. Felipe ContrerasDec 19, 2020
  179. Sergey OrganovDec 19, 2020
  180. 25/33 diff-merges: do not imply -p for new optionsSergey Organov, Dec 16, 2020
  181. 29/33 doc/git-log: describe new --diff-merges optionsSergey Organov, Dec 16, 2020
  182. Elijah NewrenDec 18, 2020
  183. Sergey OrganovDec 18, 2020
  184. Elijah NewrenDec 18, 2020
  185. Sergey OrganovDec 18, 2020
  186. Elijah NewrenDec 18, 2020
  187. 32/33 doc/git-show: include --diff-merges descriptionSergey Organov, Dec 16, 2020
  188. 33/33 t4013: add tests for --diff-merges=first-parentSergey Organov, Dec 16, 2020
  189. 22/33 diff-merges: implement new values for --diff-mergesSergey Organov, Dec 16, 2020
  190. Elijah NewrenDec 18, 2020
  191. Sergey OrganovDec 18, 2020
  192. Elijah NewrenDec 18, 2020
  193. Sergey OrganovDec 18, 2020
  194. Elijah NewrenDec 18, 2020
  195. Sergey OrganovDec 18, 2020
  196. 00/32 git-log: implement new --diff-merge optionsSergey Organov, Dec 21, 2020
  197. 32/32 t4013: add tests for --diff-merges=first-parentSergey Organov, Dec 21, 2020
  198. 09/32 diff-merges: re-arrange functions to match the order they are called inSergey Organov, Dec 21, 2020
  199. 03/32 revision: factor out initialization of diff-merge related settingsSergey Organov, Dec 21, 2020
  200. 11/32 diff-merges: new function diff_merges_set_dense_combined_if_unset()Sergey Organov, Dec 21, 2020
  201. 23/32 diff-merges: implement new values for --diff-mergesSergey Organov, Dec 21, 2020
  202. 22/32 diff-merges: make -m/-c/--cc explicitly mutually exclusiveSergey Organov, Dec 21, 2020
  203. 18/32 diff-merges: split 'ignore_merges' fieldSergey Organov, Dec 21, 2020
  204. 24/32 diff-merges: do not imply -p for new optionsSergey Organov, Dec 21, 2020
  205. 17/32 diff-merges: fix -m to properly override -c/--ccSergey Organov, Dec 21, 2020
  206. 15/32 t4013: support test_expect_failure through ':failure' magicSergey Organov, Dec 21, 2020
  207. 26/32 diff-merges: add old mnemonic counterparts to --diff-mergesSergey Organov, Dec 21, 2020
  208. 19/32 diff-merges: group diff-merge flags next to each other inside 'rev_info'Sergey Organov, Dec 21, 2020
  209. 20/32 diff-merges: get rid of now empty diff_merges_init_revs()Sergey Organov, Dec 21, 2020
  210. 25/32 diff-merges: let new options enable diff without -pSergey Organov, Dec 21, 2020
  211. Felipe ContrerasDec 21, 2020
  212. Sergey OrganovDec 21, 2020
  213. 06/32 diff-merges: rename all functions to have common prefixSergey Organov, Dec 21, 2020
  214. 07/32 diff-merges: move checks for first_parent_only out of the moduleSergey Organov, Dec 21, 2020
  215. 31/32 doc/git-show: include --diff-merges descriptionSergey Organov, Dec 21, 2020
  216. 30/32 doc/rev-list-options: document --first-parent changes merges formatSergey Organov, Dec 21, 2020
  217. 12/32 diff-merges: introduce revs->first_parent_merges flagSergey Organov, Dec 21, 2020
  218. 21/32 diff-merges: refactor opt settings into separate functionsSergey Organov, Dec 21, 2020
  219. 27/32 diff-merges: add '--diff-merges=1' as synonym for 'first-parent'Sergey Organov, Dec 21, 2020
  220. 02/32 revision: factor out setup of diff-merge related settingsSergey Organov, Dec 21, 2020
  221. 05/32 revision: move diff merges functions to its own diff-merges.cSergey Organov, Dec 21, 2020
  222. 08/32 diff-merges: rename diff_merges_default_to_enable() to match semanticsSergey Organov, Dec 21, 2020
  223. 28/32 doc/git-log: describe new --diff-merges optionsSergey Organov, Dec 21, 2020
  224. 29/32 doc/diff-generate-patch: mention new --diff-merges optionSergey Organov, Dec 21, 2020
  225. 01/32 revision: factor out parsing of diff-merge related optionsSergey Organov, Dec 21, 2020
  226. 16/32 t4013: add tests for -m failing to override -c/--ccSergey Organov, Dec 21, 2020
  227. 14/32 diff-merges: revise revs->diff flag handlingSergey Organov, Dec 21, 2020
  228. 04/32 revision: provide implementation for diff merges tweaksSergey Organov, Dec 21, 2020
  229. 10/32 diff-merges: new function diff_merges_suppress()Sergey Organov, Dec 21, 2020
  230. 13/32 diff-merges: handle imply -p on -c/--cc logic for log.cSergey Organov, Dec 21, 2020
  231. Junio C HamanoJan 16, 2021
  232. Sergey OrganovJan 16, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.