From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Elijah Newren <newren@gmail.com>
Cc: Johannes Sixt <j6t@kdbg.org>, Junio C Hamano <gitster@pobox.com>,
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>,
Git Mailing List <git@vger.kernel.org>, Eric Wong <e@80x24.org>
Subject: merge-ort and --rebase-merges, was Re: [PATCH v2 0/7] Drop support for git rebase --preserve-merges
Date: Mon, 13 Sep 2021 13:24:30 +0200 (CEST) [thread overview]
Message-ID: <nycvar.QRO.7.76.6.2109131319020.55@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <CABPp-BHWVO5VRhr1-Ou60F1wjKzJZ1e_dC01Mmzs+qB9kGayww@mail.gmail.com>
Hi Elijah,
On Fri, 10 Sep 2021, Elijah Newren wrote:
> On Fri, Sep 10, 2021 at 5:08 AM Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
> >
> > On Tue, 7 Sep 2021, Elijah Newren wrote:
> >
> > > On Tue, Sep 7, 2021 at 11:51 AM Johannes Schindelin
> > > <Johannes.Schindelin@gmx.de> wrote:
> > >
> > > [... talk about re-resolving merge conflicts when recreating merges
> > > in a `git rebase --rebase-merges` run ...]
> ...
> >
> > While I agree that `merge-ort` makes a lot of things much better, I think
> > in this context we need to keep in mind that those nested merge conflicts
> > can really hurt.
>
> Yes, and I'm not sure you fully appreciate how much either.
*grin*
> [... a lot of insight that I totally agree with ...]
>
> I believe the commit graph you were describing was this:
>
> * rebase-of-original-merge
> |\
> | * rebase-of-local-add-caller-of-core
> * | rebase-of-local-rename-to-hi
> |/
> * upstream
> |
> |
> |
> | * original-merge
> | |\
> | | * local-add-caller-of-core
> | |/
> |/|
> | * local-rename-to-hi
> |/
> * initial-version
>
>
> Further, the versions of main.c in each of those are as follows:
>
> ==> initial-version:
> int core(void) {
> printf("Hello, world!\n");
> }
>
>
> ==> local-rename-to-hi:
> int hi(void) {
> printf("Hello, world!\n");
> }
>
>
> ==> local-add-caller-of-core:
> int core(void) {
> printf("Hello, world!\n");
> }
> /* caller */
> void caller(void) {
> core();
> }
>
>
> ==> what an automatic merge of the two local-* branches would give:
> int hi(void) {
> printf("Hello, world!\n");
> }
> /* caller */
> void caller(void) {
> core();
> }
>
>
> ==> original-merge (amended from above by s/core/hi/ in caller()):
> int hi(void) {
> printf("Hello, world!\n");
> }
> /* caller */
> void caller(void) {
> hi();
> }
>
>
> ==> upstream:
> int greeting(void) {
> printf("Hello, world!\n");
> }
> /* main event loop */
> void event_loop(void) {
> /* TODO: place holder for now */
> }
>
>
> ==> rebase-of-local-rename-to-hi (kept 'hi' over 'greeting'):
> int hi(void) {
> printf("Hello, world!\n");
> }
> /* main event loop */
> void event_loop(void) {
> /* TODO: place holder for now */
> }
>
>
> ==> rebase-of-local-add-caller-of-core (kept both new functions,
> updated caller):
> int greeting(void) {
> printf("Hello, world!\n");
> }
> /* main event loop */
> void event_loop(void) {
> /* TODO: place holder for now */
> }
> /* caller */
> void caller(void) {
> greeting();
> }
That all matches my recollection of what I wanted to drive at.
> If I've understood that all correctly, then my idea will give you the
> following conflict to resolve:
>
> ==> rebase-of-original-merge, before conflict resolution:
> int hi(void) {
> printf("Hello, world!\n");
> }
> /* main event loop */
> void event_loop(void) {
> /* TODO: place holder for now */
> }
> /* caller */
> void caller(void) {
> <<<<<<< HEAD
> greeting();
> ||||||| auto-remerge of original-merge
> core();
> =======
> hi();
> >>>>>>> original-merge
> }
That looks very intriguing! I would _love_ to play with this a bit, and I
think you provided enough guidance to get going. I am currently preparing
to go mostly offline for the second half of September, read: I won't be
able to play with this before October. But I am definitely interested,
this sounds very exciting.
Ciao,
Dscho
next prev parent reply other threads:[~2021-09-13 11:24 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-23 20:50 [PATCH 0/8] Drop support for git rebase --preserve-merges Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 1/8] t5520: do not use `pull.rebase=preserve` Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 2/8] remote: warn about unhandled branch.<name>.rebase values Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 3/8] tests: stop testing `git rebase --preserve-merges` Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 4/8] pull: remove support for `--rebase=preserve` Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 5/8] rebase: drop support for `--preserve-merges` Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 6/8] git-svn: " Johannes Schindelin via GitGitGadget
2019-11-23 22:08 ` Eric Wong
2019-11-24 21:29 ` Johannes Schindelin
2019-11-25 3:15 ` Eric Wong
2019-11-23 20:50 ` [PATCH 7/8] rebase: drop the internal `rebase--interactive` command Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 8/8] remote: no longer claim that branch.*.rebase=preserve is a thing Johannes Schindelin via GitGitGadget
2021-09-01 11:57 ` [PATCH v2 0/7] Drop support for git rebase --preserve-merges Johannes Schindelin via GitGitGadget
2021-09-01 11:57 ` [PATCH v2 1/7] t5520: do not use `pull.rebase=preserve` Johannes Schindelin via GitGitGadget
2021-09-01 11:57 ` [PATCH v2 2/7] remote: warn about unhandled branch.<name>.rebase values Johannes Schindelin via GitGitGadget
2021-09-01 11:57 ` [PATCH v2 3/7] tests: stop testing `git rebase --preserve-merges` Johannes Schindelin via GitGitGadget
2021-09-01 13:26 ` Ævar Arnfjörð Bjarmason
2021-09-01 11:57 ` [PATCH v2 4/7] pull: remove support for `--rebase=preserve` Johannes Schindelin via GitGitGadget
2021-09-01 11:57 ` [PATCH v2 5/7] rebase: drop support for `--preserve-merges` Johannes Schindelin via GitGitGadget
2021-09-01 12:21 ` Ævar Arnfjörð Bjarmason
2021-09-02 13:54 ` Johannes Schindelin
2021-09-02 14:11 ` Ævar Arnfjörð Bjarmason
2021-09-01 13:33 ` Ævar Arnfjörð Bjarmason
2021-09-02 13:59 ` Johannes Schindelin
2021-09-02 14:16 ` Ævar Arnfjörð Bjarmason
2021-09-02 14:28 ` Ævar Arnfjörð Bjarmason
2021-09-02 14:34 ` Ævar Arnfjörð Bjarmason
2021-09-02 14:56 ` Ævar Arnfjörð Bjarmason
2021-09-02 15:34 ` Ævar Arnfjörð Bjarmason
2021-09-04 19:41 ` Johannes Schindelin
2021-09-05 7:32 ` Ævar Arnfjörð Bjarmason
2021-09-05 22:36 ` Junio C Hamano
2021-09-06 10:15 ` Phillip Wood
2021-09-07 12:32 ` Johannes Schindelin
2021-09-07 15:31 ` Phillip Wood
2021-09-07 19:44 ` Johannes Schindelin
2021-09-01 11:57 ` [PATCH v2 6/7] git-svn: " Johannes Schindelin via GitGitGadget
2021-09-01 13:25 ` Ævar Arnfjörð Bjarmason
2021-09-02 14:00 ` Johannes Schindelin
2021-09-02 14:08 ` Johannes Schindelin
2021-09-01 11:57 ` [PATCH v2 7/7] rebase: drop the internal `rebase--interactive` command Johannes Schindelin via GitGitGadget
2021-09-06 10:10 ` Phillip Wood
2021-09-07 12:39 ` Johannes Schindelin
2021-09-01 13:37 ` [PATCH v2 0/7] Drop support for git rebase --preserve-merges Ævar Arnfjörð Bjarmason
2021-09-02 14:16 ` Johannes Schindelin
2021-09-02 14:51 ` Ævar Arnfjörð Bjarmason
2021-09-01 22:25 ` Junio C Hamano
2021-09-02 14:18 ` Johannes Schindelin
2021-09-02 20:06 ` Johannes Sixt
2021-09-07 17:33 ` Johannes Schindelin
2021-09-07 22:48 ` Elijah Newren
2021-09-10 12:08 ` Johannes Schindelin
2021-09-10 17:16 ` Elijah Newren
2021-09-13 11:24 ` Johannes Schindelin [this message]
2021-09-13 15:53 ` merge-ort and --rebase-merges, was " Elijah Newren
2021-09-06 6:58 ` Ævar Arnfjörð Bjarmason
2021-09-07 18:27 ` Junio C Hamano
2021-09-07 19:52 ` Ævar Arnfjörð Bjarmason
2021-09-04 22:30 ` Alban Gruin
2021-09-06 10:17 ` Phillip Wood
2021-09-07 12:48 ` Johannes Schindelin
2021-09-07 21:05 ` [PATCH v3 00/11] " Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 01/11] t5520: do not use `pull.rebase=preserve` Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 02/11] remote: warn about unhandled branch.<name>.rebase values Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 03/11] tests: stop testing `git rebase --preserve-merges` Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 04/11] pull: remove support for `--rebase=preserve` Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 05/11] rebase: drop support for `--preserve-merges` Johannes Schindelin via GitGitGadget
2021-09-10 14:53 ` Ævar Arnfjörð Bjarmason
2022-07-21 19:02 ` re-mentioning --preserve-merges in the docs (was: [PATCH v3 05/11] rebase: drop support for `--preserve-merges`) Ævar Arnfjörð Bjarmason
2022-07-21 20:15 ` re-mentioning --preserve-merges in the docs Junio C Hamano
2022-07-29 13:24 ` Johannes Schindelin
2021-09-07 21:05 ` [PATCH v3 06/11] git-svn: drop support for `--preserve-merges` Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 07/11] rebase: drop the internal `rebase--interactive` command Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 08/11] rebase: remove obsolete code comment Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 09/11] rebase: stop mentioning the -p option in comments Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 10/11] rebase: remove a no-longer-used function Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 11/11] sequencer: restrict scope of a formerly public function Johannes Schindelin via GitGitGadget
2021-09-08 1:30 ` [PATCH v3 00/11] Drop support for git rebase --preserve-merges Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=nycvar.QRO.7.76.6.2109131319020.55@tvgsbejvaqbjf.bet \
--to=johannes.schindelin@gmx.de \
--cc=e@80x24.org \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=newren@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).