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

Re: [PATCH v6 3/3] rebase: add a config option for --rebase-merges

From
Glen Choo <chooglen@google.com>
Date
Mar 16, 2023, 17:32 UTC
Message-ID
<kl6lzg8cvby2.fsf@chooglen-macbookpro.roam.corp.google.com>
In-Reply-To
<CAMMLpeRGEETraueJTTV0tJSsycNYF24YX8n6h-pMp87VcCRJtQ@mail.gmail.com>
Alex Henrie <alexhenrie24@gmail.com> writes:
Show 14 quoted lines
>> > In the future, the default rebase-merges mode may change from
>> > no-rebase-cousins to rebase-cousins.
>>
>> I suspect a more likely future would be that the default is to rebase
>> 'evil' merges instead of trying to recreate merge commits, but of
>> course, the important thing is that we promote the default, not what the
>> default will be...
>
> Glen, do you have any more thoughts? At this point, the only thing
> that's keeping me from implementing Phillip's request to make
> --rebase-merges without an argument clobber rebase.rebaseMerges is
> your suspicion that we might need to change the default rebase-merges
> mode in the future, and I assume that we would want to use the
> rebase.rebaseMerges config option to facilitate the transition.
(Sorry for the late reply)

Ah, I don't really have more thoughts on the matter. I am fairly confident that we would _like_ to change the default to rebase 'evil' merges, but I don't know how likely that will be.

Perhaps it would help to enumerate the rules to see if it is too confusing or not?

The behaviors we can tweak are:
- Whether to rebase merges or not (true, false, specified mode, or
  default)
- What mode to use when rebasing merges (specified mode or default)

And the sources are either CLI or config, with CLI always overriding config.

Should we rebase a merge?
- If neither CLI or config tells us whether or not to rebase a merge,
  default to "don't rebase merges".
- If one of CLI or config tells us whether or not to rebase a merge,
  respect it.
- If both CLI or config tell us whether or not to rebase a merge,
  respect CLI and ignore config.
What mode should we use?
- If neither CLI or config tells us what mode to use, default to
  "no-rebase-cousins" (or whatever default we decide).
- If one of CLI or config tells us what mode to use, respect it.
- If both CLI or config tell us what mode to use, respect CLI and ignore
  config.

If users cleanly separate the two concepts, I think it is quite clear. (I'm not advocating for this approach, but) e.g. if we pretend that each behavior were configured separately, like:

--[no-]rebase-merges [--rebase-merges-mode=(rebase-cousins|no-rebase-cousins)]

I don't think there would be any confusion. (Having --rebase-merges-mode be a no-op without --rebase-merges is probably even more confusing to users, plus this would break backwards compatibility, so I don't think this is a good idea at all.)

Your doc patch explains the rules pretty clearly, but perhaps it doesn't explain this mental model clearly enough, hence the confusion. If we don't find a good way to communicate this (I think it is clear, but other reviewers seem yet unconvinced), I wouldn't mind taking Phillip's suggestion to have "--rebase-merges" override "rebase.rebaseMerges='specific-mode'".

>
> -Alex
Previous: Alex HenrieNext: Felipe Contreras
Message 54 of 96 in “rebase: add documentation and test for --no-rebase-merges”
  1. 1/3 rebase: add documentation and test for --no-rebase-mergesAlex Henrie, Feb 23, 2023
  2. 2/3 rebase: stop accepting --rebase-merges=""Alex Henrie, Feb 23, 2023
  3. Johannes SchindelinFeb 24, 2023
  4. Junio C HamanoFeb 24, 2023
  5. Alex HenrieFeb 24, 2023
  6. Junio C HamanoFeb 24, 2023
  7. Alex HenrieFeb 24, 2023
  8. Junio C HamanoFeb 24, 2023
  9. Alex HenrieFeb 24, 2023
  10. Junio C HamanoFeb 24, 2023
  11. Alex HenrieFeb 24, 2023
  12. Phillip WoodFeb 24, 2023
  13. Alex HenrieFeb 24, 2023
  14. 3/3 rebase: add a config option for --rebase-mergesAlex Henrie, Feb 23, 2023
  15. Johannes SchindelinFeb 24, 2023
  16. Alex HenrieFeb 24, 2023
  17. Phillip WoodFeb 24, 2023
  18. Alex HenrieFeb 24, 2023
  19. Junio C HamanoFeb 23, 2023
  20. Johannes SchindelinFeb 24, 2023
  21. Junio C HamanoFeb 24, 2023
  22. Alex HenrieFeb 25, 2023
  23. 0/3 rebase: add a config option for --rebase-mergesAlex Henrie, Feb 25, 2023
  24. 1/3 rebase: add documentation and test for --no-rebase-mergesAlex Henrie, Feb 25, 2023
  25. Glen ChooMar 1, 2023
  26. 2/3 rebase: deprecate --rebase-merges=""Alex Henrie, Feb 25, 2023
  27. Glen ChooMar 1, 2023
  28. Phillip WoodMar 2, 2023
  29. Calvin WanMar 2, 2023
  30. 3/3 rebase: add a config option for --rebase-mergesAlex Henrie, Feb 25, 2023
  31. Glen ChooMar 1, 2023
  32. Phillip WoodMar 2, 2023
  33. Alex HenrieMar 4, 2023
  34. Phillip WoodMar 7, 2023
  35. Alex HenrieMar 12, 2023
  36. Phillip WoodMar 13, 2023
  37. Felipe ContrerasMar 13, 2023
  38. Junio C HamanoMar 13, 2023
  39. About replaying "evil" merges... Re: [PATCH v5 3/3] rebase: add a config option for --rebase-mergesJohannes Schindelin, Mar 24, 2023
  40. Calvin WanMar 2, 2023
  41. Alex HenrieMar 4, 2023
  42. Glen ChooMar 1, 2023
  43. Alex HenrieMar 2, 2023
  44. Alex HenrieMar 2, 2023
  45. 0/3 rebase: document, clean up, and introduce a config option for --rebase-mergesAlex Henrie, Mar 5, 2023
  46. 3/3 rebase: add a config option for --rebase-mergesAlex Henrie, Mar 5, 2023
  47. Phillip WoodMar 7, 2023
  48. Junio C HamanoMar 7, 2023
  49. Alex HenrieMar 12, 2023
  50. Glen ChooMar 8, 2023
  51. Glen ChooMar 8, 2023
  52. Alex HenrieMar 12, 2023
  53. Alex HenrieMar 15, 2023
  54. Glen ChooMar 16, 2023
  55. Felipe ContrerasMar 16, 2023
  56. Glen ChooMar 16, 2023
  57. Felipe ContrerasMar 16, 2023
  58. Alex HenrieMar 16, 2023
  59. Glen ChooMar 16, 2023
  60. Alex HenrieMar 18, 2023
  61. Johannes SchindelinMar 24, 2023
  62. Sergey OrganovMar 25, 2023
  63. 1/3 rebase: add documentation and test for --no-rebase-mergesAlex Henrie, Mar 5, 2023
  64. Sergey OrganovMar 8, 2023
  65. 2/3 rebase: deprecate --rebase-merges=""Alex Henrie, Mar 5, 2023
  66. Phillip WoodMar 7, 2023
  67. Sergey OrganovMar 5, 2023
  68. Alex HenrieMar 5, 2023
  69. Sergey OrganovMar 5, 2023
  70. Alex HenrieMar 6, 2023
  71. Sergey OrganovMar 6, 2023
  72. Junio C HamanoMar 6, 2023
  73. Junio C HamanoMar 6, 2023
  74. Phillip WoodMar 6, 2023
  75. Alex HenrieMar 6, 2023
  76. Phillip WoodMar 7, 2023
  77. Glen ChooMar 8, 2023
  78. 0/3 rebase: document, clean up, and introduce a config option for --rebase-mergesAlex Henrie, Mar 12, 2023
  79. 1/3 rebase: add documentation and test for --no-rebase-mergesAlex Henrie, Mar 12, 2023
  80. 2/3 rebase: deprecate --rebase-merges=""Alex Henrie, Mar 12, 2023
  81. 3/3 rebase: add a config option for --rebase-mergesAlex Henrie, Mar 12, 2023
  82. 0/3 rebase: document, clean up, and introduce a config option for --rebase-mergesAlex Henrie, Mar 20, 2023
  83. 1/3 rebase: add documentation and test for --no-rebase-mergesAlex Henrie, Mar 20, 2023
  84. 2/3 rebase: deprecate --rebase-merges=""Alex Henrie, Mar 20, 2023
  85. 3/3 rebase: add a config option for --rebase-mergesAlex Henrie, Mar 20, 2023
  86. Phillip WoodMar 22, 2023
  87. Junio C HamanoMar 23, 2023
  88. Phillip WoodMar 24, 2023
  89. Alex HenrieMar 25, 2023
  90. Alex HenrieMar 25, 2023
  91. 0/3 rebase: document, clean up, and introduce a config option for --rebase-mergesAlex Henrie, Mar 26, 2023
  92. 1/3 rebase: add documentation and test for --no-rebase-mergesAlex Henrie, Mar 26, 2023
  93. 2/3 rebase: deprecate --rebase-merges=""Alex Henrie, Mar 26, 2023
  94. 3/3 rebase: add a config option for --rebase-mergesAlex Henrie, Mar 26, 2023
  95. Phillip WoodMar 26, 2023
  96. Junio C HamanoMar 27, 2023

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.