Merge branch 'bw/rebase-autostash-keep-current-branch'
"git rebase --autostash <upstream> <branch>", when <branch> is different from the current branch, incorrectly moved the tip of the current branch, which has been corrected. * bw/rebase-autostash-keep-current-branch: builtin/rebase.c: Remove pointless message builtin/rebase.c: make sure the active branch isn't moved when autostashing
This commit is contained in:
commit
974bdb0205
@ -2002,9 +2002,6 @@ 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);
|
||||
|
||||
argv_array_pushl(&stash.args,
|
||||
"stash", "create", "autostash", NULL);
|
||||
@ -2025,17 +2022,9 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
|
||||
options.state_dir);
|
||||
write_file(autostash, "%s", oid_to_hex(&oid));
|
||||
printf(_("Created autostash: %s\n"), buf.buf);
|
||||
if (reset_head(&head->object.oid, "reset --hard",
|
||||
if (reset_head(NULL, "reset --hard",
|
||||
NULL, RESET_HEAD_HARD, NULL, NULL) < 0)
|
||||
die(_("could not reset --hard"));
|
||||
printf(_("HEAD is now at %s"),
|
||||
find_unique_abbrev(&head->object.oid,
|
||||
DEFAULT_ABBREV));
|
||||
strbuf_reset(&buf);
|
||||
pp_commit_easy(CMIT_FMT_ONELINE, head, &buf);
|
||||
if (buf.len > 0)
|
||||
printf(" %s", buf.buf);
|
||||
putchar('\n');
|
||||
|
||||
if (discard_index(the_repository->index) < 0 ||
|
||||
repo_read_index(the_repository) < 0)
|
||||
|
@ -37,7 +37,6 @@ test_expect_success setup '
|
||||
create_expected_success_am () {
|
||||
cat >expected <<-EOF
|
||||
$(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual)
|
||||
HEAD is now at $(git rev-parse --short feature-branch) third commit
|
||||
First, rewinding head to replay your work on top of it...
|
||||
Applying: second commit
|
||||
Applying: third commit
|
||||
@ -48,7 +47,6 @@ create_expected_success_am () {
|
||||
create_expected_success_interactive () {
|
||||
q_to_cr >expected <<-EOF
|
||||
$(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual)
|
||||
HEAD is now at $(git rev-parse --short feature-branch) third commit
|
||||
Applied autostash.
|
||||
Successfully rebased and updated refs/heads/rebased-feature-branch.
|
||||
EOF
|
||||
@ -57,7 +55,6 @@ create_expected_success_interactive () {
|
||||
create_expected_failure_am () {
|
||||
cat >expected <<-EOF
|
||||
$(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual)
|
||||
HEAD is now at $(git rev-parse --short feature-branch) third commit
|
||||
First, rewinding head to replay your work on top of it...
|
||||
Applying: second commit
|
||||
Applying: third commit
|
||||
@ -70,7 +67,6 @@ create_expected_failure_am () {
|
||||
create_expected_failure_interactive () {
|
||||
cat >expected <<-EOF
|
||||
$(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual)
|
||||
HEAD is now at $(git rev-parse --short feature-branch) third commit
|
||||
Applying autostash resulted in conflicts.
|
||||
Your changes are safe in the stash.
|
||||
You can run "git stash pop" or "git stash drop" at any time.
|
||||
@ -306,4 +302,12 @@ test_expect_success 'branch is left alone when possible' '
|
||||
test unchanged-branch = "$(git rev-parse --abbrev-ref HEAD)"
|
||||
'
|
||||
|
||||
test_expect_success 'never change active branch' '
|
||||
git checkout -b not-the-feature-branch unrelated-onto-branch &&
|
||||
test_when_finished "git reset --hard && git checkout master" &&
|
||||
echo changed >file0 &&
|
||||
git rebase --autostash not-the-feature-branch feature-branch &&
|
||||
test_cmp_rev not-the-feature-branch unrelated-onto-branch
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user