Fix rebase -p --onto
authorGreg Price <price@ksplice.com>
Wed, 22 Jul 2009 16:38:58 +0000 (12:38 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 22 Jul 2009 18:15:06 +0000 (11:15 -0700)
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 a situation with two merged branches on a common base X:

X---o---o---o---M
\ /
x---x---x---x

Y

if we try to move the branches 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.

Signed-off-by: Greg Price <price@ksplice.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
No differences found