Hi Ben

I need to have a longer look at this (I don't understand why we're calling reset --hard after we've stashed the changes) but I notice that the test lines you're changing predate the switch to the builtin rebase so those changes are not related to the branch switching problem.

Best Wishes

Phillip

On 18/08/2019 10:53, Ben Wijen wrote:
The rebase --autostash incorrectly moved the current branch to orig_head, where
orig_head -- commit object name of tip of the branch before rebasing

It seems this was incorrectly taken over from git-legacy-rebase.sh

Signed-off-by: Ben Wijen <b...@wijen.net>
---
  builtin/rebase.c            | 18 ++++++------------
  t/t3420-rebase-autostash.sh |  4 ----
  2 files changed, 6 insertions(+), 16 deletions(-)

diff --git a/builtin/rebase.c b/builtin/rebase.c
index 670096c065..a928f44941 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1968,9 +1968,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);
@@ -1991,17 +1988,14 @@ 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",
+
+                       /*
+                        * We might not be on orig_head yet:
+                        * Make sure to reset w/o switching branches...
+                        */
+                       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)
diff --git a/t/t3420-rebase-autostash.sh b/t/t3420-rebase-autostash.sh
index 867e4e0b17..2ea1909881 100755
--- a/t/t3420-rebase-autostash.sh
+++ b/t/t3420-rebase-autostash.sh
@@ -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.

Reply via email to