Subject: Regression in rebase-in-C with rebase.autoStash=true

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Tue, 06 Nov 2018 14:59:43 +0100

On Tue, Oct 23 2018, Johannes Schindelin via GitGitGadget wrote:

> Johannes Schindelin (2):
>   rebase --autostash: demonstrate a problem with dirty submodules
>   rebase --autostash: fix issue with dirty submodules
>
>  builtin/rebase.c            |  2 +-
>  t/t3420-rebase-autostash.sh | 10 ++++++++++
>  2 files changed, 11 insertions(+), 1 deletion(-)

There's another bug with rebase.autoStash in master (and next/pu) but
not v2.19.0. I tried to bisect bit it just comes down to 5541bd5b8f
("rebase: default to using the builtin rebase", 2018-08-08).

Credit to a co-worker of mine who wishes to remain anonymous for
discovering this. I narrowed down his test-case to (any repo will do):
    
    (
        rm -rf /tmp/todo &&
        git clone --single-branch --no-tags --branch=todo https://github.com/git/git.git /tmp/todo &&
        cd /tmp/todo &&
        rm Make &&
        git rev-parse --abbrev-ref HEAD &&
        git -c rebase.autoStash=true -c pull.rebase=true pull &&
        if test $(git rev-parse --abbrev-ref HEAD) != 'todo'
        then
            echo 'On detached head!' &&
            git status &&
            exit 1
        else
            echo 'We are still on our todo branch!'
        fi
    )