summaryrefslogtreecommitdiff
path: root/builtin/rebase.c
diff options
context:
space:
mode:
authorBen Wijen <ben@wijen.net>2019-08-30 15:16:05 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-09-07 17:17:05 (GMT)
commitd2172ef02dee468b85bc4567332cbf58cd6b4b0a (patch)
tree540c247acc482e67a82b8cde319c05c319adc420 /builtin/rebase.c
parent5fa0f5238b0cd46cfe7f6fa76c3f526ea98148d9 (diff)
downloadgit-d2172ef02dee468b85bc4567332cbf58cd6b4b0a.zip
git-d2172ef02dee468b85bc4567332cbf58cd6b4b0a.tar.gz
git-d2172ef02dee468b85bc4567332cbf58cd6b4b0a.tar.bz2
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>
Diffstat (limited to 'builtin/rebase.c')
-rw-r--r--builtin/rebase.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 670096c..0a2f927 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1968,9 +1968,12 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
state_dir_path("autostash", &options);
struct child_process stash = CHILD_PROCESS_INIT;
struct object_id oid;
- struct commit *head =
- lookup_commit_reference(the_repository,
- &options.orig_head);
+ struct object_id head_oid;
+ struct commit *head;
+
+ if (get_oid("HEAD", &head_oid))
+ die(_("could not determine HEAD revision"));
+ head = lookup_commit_reference(the_repository, &head_oid);
argv_array_pushl(&stash.args,
"stash", "create", "autostash", NULL);