Re: [PATCH v2 04/13] Teach rebase interactive the mark command
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Apr 29, 2008, 10:52 UTC
- Message-ID
- <alpine.DEB.1.00.0804291147450.27457@eeepc-johanness>
- In-Reply-To
- <4816CA72.8070405@viscovery.net>
Hi,
On Tue, 29 Apr 2008, Johannes Sixt wrote:
Show 38 quoted lines
> Junio C Hamano schrieb: > > This is just a minor syntax issue and I am not sure why we got into > > this misunderstanding, but let's try again. Suppose you want to > > recreate this history on top of a different O'. For merges, upper > > parents are earlier ones: > > > > A reset O' > > / \ pick B > > / X reset O' > > / / \ pick A > > O---B Z merge B -- recreate X > > \ \ / reset O' > > \ Y pick C > > \ / merge B? -- recreate Y > > C reset B -- go back to recreated X > > merge B? -- recreate Z > > > > The above sequence does not work. > > Because it is hand-crafted. I'd expect rebase to suggest a series that > works as long as the user doesn't modify it. Like this: > > reset O' > pick C > reset O' > pick B > merge C -- recreate Y > reset O' > pick A > merge B -- recreate X > merge Y -- recreate Z > > Here all commit names are clearly the original in the first insn that > references it, and the rewritten version in later references. No marks > needed. > > If the user modifies the insns, he better knows what he's doing, in > particular, when it's necessary to rebuild such complex histories.
I fully agree. rebase -i is _not_ about the same goal as git-sequencer. rebase -i is about user interaction. sequencer is about having a common plumbing for the different porcelains.
And of course, if you want to play games with rebase -i, you can _always_ use the "edit" command (even if you do not plan to edit) to get the commit name of the new commit.
And you can _always_ use the _full_ commit name to reference the original commit (at least that is how I planned it: the original _short_ name would be replaced by the rewritten commit name, but not the _long_ name).
Ciao, Dscho