builtin/rebase.c: make sure the active branch isn't moved when autostashing
commitd2172ef02dee468b85bc4567332cbf58cd6b4b0a
authorBen Wijen <ben@wijen.net>
Fri, 30 Aug 2019 15:16:05 +0000 (30 17:16 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sat, 7 Sep 2019 17:17:05 +0000 (7 10:17 -0700)
tree540c247acc482e67a82b8cde319c05c319adc420
parent5fa0f5238b0cd46cfe7f6fa76c3f526ea98148d9
builtin/rebase.c: make sure the active branch isn't moved when autostashing

Consider the following scenario:
    git checkout not-the-master
    work work work
    git rebase --autostash upstream master

Here 'rebase --autostash <upstream> <branch>' incorrectly moves the
active branch (not-the-master) to master (before the rebase).

The expected behavior: (58794775:/git-rebase.sh:526)
    AUTOSTASH=$(git stash create autostash)
    git reset --hard
    git checkout master
    git rebase upstream
    git stash apply $AUTOSTASH

The actual behavior: (6defce2b:/builtin/rebase.c:1062)
    AUTOSTASH=$(git stash create autostash)
    git reset --hard master
    git checkout master
    git rebase upstream
    git stash apply $AUTOSTASH

This commit reinstates the 'legacy script' behavior as introduced with
58794775: rebase: implement --[no-]autostash and rebase.autostash

Signed-off-by: Ben Wijen <ben@wijen.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rebase.c
t/t3420-rebase-autostash.sh