From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Stephen Haberman <stephen@exigencecorp.com>, git@vger.kernel.org
Subject: Heads up: rebase -i -p will be made sane again
Date: Tue, 27 Jan 2009 10:29:53 +0100 (CET) [thread overview]
Message-ID: <alpine.DEB.1.00.0901271012550.14855@racer> (raw)
Dear list,
I am progressing to a point where I am almost comfortable to send the
patch series; I want to use the thing myself first, and I want to fix a
design bug.
As always, my code is public, but will be rebased frequently. You have
been warned.
BTW I am really sorry for the state I left the --preserve-merges code for
a long time. Originally, it was never meant to be used interactively, and
that shows sorely.
As for the design bug I want to fix: imagine this history:
------A
/ /
/ /
---- B
\ \
\ \
C-----D-----E = HEAD
A, C and D touch the same file, and A and D agree on the contents.
Now, rebase -p A does the following at the moment:
------A-----E' = HEAD
/ /
/ /
---- B
In other words, C is truly forgotten, and it is pretended that D never
happened, either. That is exactly what test case 2 in t3410 tests for
[*1*].
This is insane.
So after my rebase -i -p revamp, this will happen instead: in the
interactive version you will get the script
pick C
merge parents B' original D
pick E
In the non-interactive version -- or if you change nothing, in the
interactive version, too -- this will lead to a conflict while picking C.
As it should.
Ciao,
Dscho
[*1*] The code in t3410 was not really easy to read, even if there was an
explanation what it tried to do, but the test code was inconsitent,
sometimes tagging, sometimes not, sometimes committing with -a, sometimes
"git add"ing first, yet almost repetitive.
In my endeavor not only to understand it, and either fix my code or the
code in t3410, I refactored it so that others should have a much easier
time to understand what it actually does.
next reply other threads:[~2009-01-27 9:30 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-27 9:29 Johannes Schindelin [this message]
2009-01-27 14:54 ` Heads up: rebase -i -p will be made sane again Stephen Haberman
2009-01-27 17:45 ` [PATCH 0/6] Simplifications of some 'rebase' tests Johannes Schindelin
2009-01-27 17:45 ` [PATCH 1/6] t3404 & t3411: undo copy&paste Johannes Schindelin
2009-01-27 21:01 ` Junio C Hamano
2009-01-27 21:57 ` Johannes Schindelin
2009-01-27 22:46 ` Junio C Hamano
2009-01-27 22:53 ` Johannes Schindelin
2009-01-27 22:34 ` [PATCH v2 0/6] rebase simplifications Johannes Schindelin
2009-01-27 22:50 ` Junio C Hamano
2009-01-27 23:10 ` Johannes Schindelin
2009-01-27 22:34 ` [PATCH v2 1/6] t3404 & t3411: undo copy&paste Johannes Schindelin
2009-01-27 22:34 ` [PATCH v2 2/6] lib-rebase.sh: Document what set_fake_editor() does Johannes Schindelin
2009-01-27 22:34 ` [PATCH v2 3/6] test-lib.sh: introduce test_commit() and test_merge() helpers Johannes Schindelin
2009-01-27 22:34 ` [PATCH v2 4/6] Simplify t3410 Johannes Schindelin
2009-01-27 22:35 ` [PATCH v2 5/6] Simplify t3411 Johannes Schindelin
2009-01-27 22:35 ` [PATCH v2 6/6] Simplify t3412 Johannes Schindelin
2009-01-27 17:46 ` [PATCH 2/6] lib-rebase.sh: Document what set_fake_editor() does Johannes Schindelin
2009-01-27 21:03 ` Junio C Hamano
2009-01-27 21:58 ` Johannes Schindelin
2009-01-27 17:47 ` [PATCH 3/6] lib-rebase.sh: introduce test_commit() and test_merge() helpers Johannes Schindelin
2009-01-27 21:09 ` Junio C Hamano
2009-01-27 17:48 ` [PATCH 4/6] Simplify t3410 Johannes Schindelin
2009-01-27 17:48 ` [PATCH 5/6] Simplify t3411 Johannes Schindelin
2009-01-27 17:49 ` [PATCH 6/6] Simplify t3412 Johannes Schindelin
2009-01-27 17:59 ` Heads up: rebase -i -p will be made sane again Johannes Schindelin
2009-01-28 1:53 ` Johannes Schindelin
2009-01-28 3:39 ` Stephen Haberman
2009-01-28 4:01 ` Johannes Schindelin
2009-01-28 5:21 ` Stephen Haberman
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.1.00.0901271012550.14855@racer \
--to=johannes.schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=stephen@exigencecorp.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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox