Junio C Hamano [off-list ref] writes:
Dave Olszewski [off-list ref] writes:
quoted
quoted
quoted
+test_expect_success 'rebase while detaching HEAD' '
+ grandparent=$(git rev-parse HEAD~2) &&
+ test_tick &&
+ FAKE_LINES="2 1" git rebase -i HEAD~2 HEAD^0 &&
What's the point of saying this? You could instead say:
git rebase -i HEAD~2
no?
...
Ahh, Ok, the point is that when we start this sequence we are on a branch,
and then you want to end up on a detached HEAD that points at the result
of the branch.
I'll queue it in 'pu', but with a little tweak to the test to make it
clear what is going on, perhaps like this.
test_expect_success 'rebase while detaching HEAD' '
git symbolic-ref HEAD &&
grandparent=$(git rev-parse HEAD~2) &&
test_tick &&
FAKE_LINES="2 1" git rebase -i HEAD~2 HEAD^0 &&
test $grandparent = $(git rev-parse HEAD~2) &&
test_must_fail git symbolic-ref HEAD
'
We may need to document this behaviour, by the way, if we make it official
that the extra "branch to be rewritten" parameter can be a non-branch.
Two points are that you can give arbitrary commit, and that you will end
up with a detached HEAD that points at the result if you did so.
Also I did't followed the code, but does it behave sanely when you say
"rebase --abort"?
On Sun, 14 Mar 2010, Junio C Hamano wrote:
Ahh, Ok, the point is that when we start this sequence we are on a branch,
and then you want to end up on a detached HEAD that points at the result
of the branch.
Yep, you got it
I'll queue it in 'pu', but with a little tweak to the test to make it
clear what is going on, perhaps like this.
test_expect_success 'rebase while detaching HEAD' '
git symbolic-ref HEAD &&
grandparent=$(git rev-parse HEAD~2) &&
test_tick &&
FAKE_LINES="2 1" git rebase -i HEAD~2 HEAD^0 &&
test $grandparent = $(git rev-parse HEAD~2) &&
test_must_fail git symbolic-ref HEAD
'
Good idea. Thanks.
We may need to document this behaviour, by the way, if we make it official
that the extra "branch to be rewritten" parameter can be a non-branch.
Two points are that you can give arbitrary commit, and that you will end
up with a detached HEAD that points at the result if you did so.
Also I did't followed the code, but does it behave sanely when you say
"rebase --abort"?
Good question. It turns out that both rebase and rebase -i will end
up on the commit specified by <branch>, whether it's a branch or not.
That might be the expected and desired behavior, though:
[Starting on branch A]
git rebase origin/B B
git rebase --abort
[HEAD is now a symref to B]
[Starting on branch A]
git rebase origin/B B^0
git rebase --abort
[HEAD is now detached at B^0]
Dave Olszewski [off-list ref] writes:
quoted
Also I did't follow the code, but does it behave sanely when you say
"rebase --abort"?
Good question. It turns out that both rebase and rebase -i will end
up on the commit specified by <branch>, whether it's a branch or not.
That might be the expected and desired behavior, though:
[Starting on branch A]
git rebase origin/B B
git rebase --abort
[HEAD is now a symref to B]
[Starting on branch A]
git rebase origin/B B^0
git rebase --abort
[HEAD is now detached at B^0]
Yup, that is what I would call "behave sanely". Thanks for clarification.