Re: [PATCH] Fix rebase -p --onto
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Jul 17, 2009, 06:38 UTC
- Message-ID
- <4A601C59.8040108@viscovery.net>
- In-Reply-To
- <20090716230031.GM7503@vinegar-pot.mit.edu>
Greg Price schrieb:
Show 34 quoted lines
> In a rebase with --onto, the correct test for whether we can skip > rewriting a commit is if it is already on top of $ONTO, not $UPSTREAM. > Without --onto, this distinction does not exist and the behavior does > not change. > > > In the situation > > X---o---o---o---M > \ / > x---x---x---x > > Y > > if we try to move the branches merged at M from their base on X to be > based on Y, so as to get > > X > > Y---o'--o'--o'--M' > \ / > x'--x'--x'--x' > > then we fail. The command `git rebase -p --onto Y X M` moves only the > first-parent chain, like so: > > X > \ > x---x---x---x > \ > Y---o'--o'--o'--M' > > because it mistakenly drops the other branch(es) x---x---x---x from > the TODO file. This tests and fixes this behavior.
I think the current behavior is by design. There is nothing to fix.
The purpose of rebase -p is to leave non-first children alone and rebase only the first child parenthood chain. It is not the purpose to reseat an entire history DAG.
-- Hannes