diff options
| author | Junio C Hamano <gitster@pobox.com> | 2018-11-18 18:23:55 +0900 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2018-11-18 18:23:55 +0900 |
| commit | 9aefd353804b744e05f253fb196029be620b26c0 (patch) | |
| tree | a3fc63fb2803a3177958643e11b105ff3a22dcf4 | |
| parent | a5170794372cf1325710a3419473c91ec4af53bf (diff) | |
| parent | 176f5d965ba128f79a51d6c8d1620506672403e1 (diff) | |
| download | git-9aefd353804b744e05f253fb196029be620b26c0.tar.gz | |
Merge branch 'js/rebase-autostash-detach-fix'
"git rebase --autostash" did not correctly re-attach the HEAD at times.
* js/rebase-autostash-detach-fix:
built-in rebase --autostash: leave the current branch alone if possible
built-in rebase: demonstrate regression with --autostash
| -rw-r--r-- | builtin/rebase.c | 3 | ||||
| -rwxr-xr-x | t/t3420-rebase-autostash.sh | 8 |
2 files changed, 10 insertions, 1 deletions
diff --git a/builtin/rebase.c b/builtin/rebase.c index b84568fc4e..6db1b7cc56 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -613,7 +613,8 @@ static int reset_head(struct object_id *oid, const char *action, reflog_head = msg.buf; } if (!switch_to_branch) - ret = update_ref(reflog_head, "HEAD", oid, orig, REF_NO_DEREF, + ret = update_ref(reflog_head, "HEAD", oid, orig, + detach_head ? REF_NO_DEREF : 0, UPDATE_REFS_MSG_ON_ERR); else { ret = create_symref("HEAD", switch_to_branch, msg.buf); diff --git a/t/t3420-rebase-autostash.sh b/t/t3420-rebase-autostash.sh index f355c6825a..4c7494cc8f 100755 --- a/t/t3420-rebase-autostash.sh +++ b/t/t3420-rebase-autostash.sh @@ -361,4 +361,12 @@ test_expect_success 'autostash with dirty submodules' ' git rebase -i --autostash HEAD ' +test_expect_success 'branch is left alone when possible' ' + git checkout -b unchanged-branch && + echo changed >file0 && + git rebase --autostash unchanged-branch && + test changed = "$(cat file0)" && + test unchanged-branch = "$(git rev-parse --abbrev-ref HEAD)" +' + test_done |
