Re: [PATCH] rebase--interactive: don't enforce valid branch

3 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH] rebase--interactive: don't enforce valid branch

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:48:25

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"?

Re: Re: [PATCH] rebase--interactive: don't enforce valid branch

From: Dave Olszewski <hidden>
Date: 2016-06-15 22:48:25

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]

Re: [PATCH] rebase--interactive: don't enforce valid branch

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:48:26

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help