Re: [RFC] Rebasing merges: a jorney to the ultimate solution(RoadClear)
- From
Sergey Organov <sorganov@gmail.com>
- Date
- Mar 15, 2018, 06:00 UTC
- Message-ID
- <87zi397uak.fsf@javad.com>
- In-Reply-To
- <d5e68db4-8006-2c0e-bc21-0b136503edd9@gmail.com>
Hi Buga,
Igor Djordjevic <igor.d.djordjevic@gmail.com> writes:
> On 14/03/2018 15:24, Sergey Organov wrote:
[...]
Show 16 quoted lines
>> Thinking about it I've got an idea that what we actually need is >> --no-flatten flag that, when used alone, will just tell "git rebase" to >> stop flattening history, and which will be implicitly imposed by >> --recreate-merges (and --preserve-merges). >> >> Then the only thing the --recreate-merges will tune is to put 'merge' >> directives into the todo list for merge commits, exactly according to >> what its name suggests, while the default behavior will be to put 'pick' >> with suitable syntax into the todo. And arguments to the >> --recreate-merge will specify additional options for the 'merge' >> directive, obviously. > > This seem to basically boil down to what I mentioned previously[2] > through use of new `--rebase-merges` alongside `--recreate-merges`, just > that you named it `--no-flatten` here, but the point is the same - and > not something Johannes liked, "polluting" rebase option space further.
Not quite so. The problem with --XXX-merges flags is that they do two things at once: they say _what_ to do and _how_ to do it. Clean UI designs usually have these things separate, and that's what I propose.
The --[no-]flatten says _what_ (not) to do, and --recreate-merges says _how_ exactly it will be performed. In this model --no-flatten could have been called, say --preserve-shape, but not --rebase-merges.
To minimize pollution, the _how_ part could rather be made option value:
--no-flatten[=<strategy>]
where <strategy> is 'rebase', 'remerge', etc.
In this case we will need separate option to specify strategy options, if required, that will lead us to something similar to the set of merge strategies options.
> I would agree with him, and settling onto `--rebase-merges` _instead_ of > `--recreate-merges` seems as a more appropriate name, indeed, now that > default behavior is actually merge commit rebasing and not recreating > (recreating still being possible through user editing the todo list).
I hope he'd be pleased to be able to say --no-flatten=remerge and get back his current mode of operation, that he obviously has a good use for.
-- Sergey