Re: [RFC] Rebasing merges: a jorney to the ultimate solution(RoadClear)
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Mar 7, 2018, 07:09 UTC
- Message-ID
- <nycvar.QRO.7.76.6.1803070804440.20700@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz>
- In-Reply-To
- <xmqqzi3k23fu.fsf@gitster-ct.c.googlers.com>
Hi Junio,
On Tue, 6 Mar 2018, Junio C Hamano wrote:
Show 16 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > > >> I don't think its possible to guess the semantics of the original merge > >> as users can use custom merge strategies and amend the result. It would > >> be possible to detect and unamended '-s ours' merge but special casing > >> that may end up causing users more confusion rather than helping them. > > > > FWIW I agree. > > I think it is a mistake to sacrifice predictability only to add > cleverness that sometimes work. Elsewhere in the thread, I think I > saw an argument to treat interactive and non-interactive something > very different, but there is no fundamental difference between them > (it is far easier with interactive to force the command to "port" > each change to a vastly different context) so having consistent > behaviour between the two cases is important, too.
I could be swayed both ways, but Buga already pointed out that we do not have to compromise any consistency, simply by adding some syntactic sugar to the `merge` command so that the different behavior is *explicit*.
Show 10 quoted lines
> > My original plan was to always merge recursively and suggest to use `exec` > > commands if anything else is needed. > > > > But now with that excellent new idea to perform successive three-way > > merges of the original merge commit with the new tips, using the old tips > > as merge base, I am considering to change that. > > OK, does this mean we want to wait before merging the "recreate > merge" topic down to 'next'? For more than a few weeks, it has been > slated for 'next'.
Maybe a few more days.
My current thinking is to rework the handling of -c vs -C and *not* have two different todo_command enum values, but rather introduce an unsigned integer that has flags such as TODO_MERGE_EDIT.
And for this new behavior, we could introduce a new flag (TODO_MERGE_REBASE_MERGE_COMMIT or something less unwieldy) and set that flag via
merge -R -C <commit> <merge>...
(i.e. via a new flag `-R`).
I want to discuss this in the other subthread, though.
Ciao, Dscho