"Phillip Wood via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > From: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> > > Aborting a rebase stated with 'git rebase <upstream> <tag-object>' > should checkout the commit pointed to by <tag-object>. Instead it gives > > error: update_ref failed for ref 'HEAD': cannot update ref 'HEAD': > trying to write non-commit object > 710d743b2b9892457fdcc3970f397e6ec07447e0 to branch 'HEAD' > > This is because when we parse the command line arguments although we > check that the tag points to a commit we remember the oid of the tag > and try and checkout that object rather than the commit it points > to. Fix this by using lookup_commit_reference_by_name() when parsing > the command line. > > Signed-off-by: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> [...] > diff --git a/t/t3407-rebase-abort.sh b/t/t3407-rebase-abort.sh > index 162112ba5ea..ebbaed147a6 100755 > --- a/t/t3407-rebase-abort.sh > +++ b/t/t3407-rebase-abort.sh > @@ -11,18 +11,18 @@ test_expect_success setup ' > test_commit a a a && > git branch to-rebase && > > - test_commit b a b && > - test_commit c a c && > + test_commit --annotate b a b && > + test_commit --annotate c a c && > > git checkout to-rebase && > test_commit "merge should fail on this" a d d && > - test_commit "merge should fail on this, too" a e pre-rebase > + test_commit --annotate "merge should fail on this, too" a e pre-rebase > ' These two do not seem to belong to this particular commit? > > # Check that HEAD is equal to "pre-rebase" and the current branch is > # "to-rebase" > check_head() { > - test_cmp_rev HEAD pre-rebase && > + test_cmp_rev HEAD pre-rebase^{commit} && > test "$(git symbolic-ref HEAD)" = refs/heads/to-rebase > } -- Sergey Organov