Skip to content

Commit

Permalink
Fix "checkout --track -b newbranch" on detached HEAD
Browse files Browse the repository at this point in the history
The test to make sure that checkout fails when --track was asked for and
we cannot set up tracking information in t7201 was wrong, and it turns out
that the implementation for that feature itself was buggy.  This fixes it.

Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
gitster committed Oct 17, 2008
1 parent 8ed0a74 commit 51a94af
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
4 changes: 3 additions & 1 deletion branch.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,9 @@ void create_branch(const char *head,
die("Cannot setup tracking information; starting point is not a branch.");
break;
case 1:
/* Unique completion -- good */
/* Unique completion -- good, only if it is a real ref */
if (track == BRANCH_TRACK_EXPLICIT && !strcmp(real_ref, "HEAD"))
die("Cannot setup tracking information; starting point is not a branch.");
break;
default:
die("Ambiguous object name: '%s'.", start_name);
Expand Down
14 changes: 8 additions & 6 deletions t/t7201-co.sh
Original file line number Diff line number Diff line change
Expand Up @@ -330,12 +330,14 @@ test_expect_success \
test "$(git config branch.track2.merge)"
git config branch.autosetupmerge false'

test_expect_success \
'checkout w/--track from non-branch HEAD fails' '
git checkout -b delete-me master &&
rm .git/refs/heads/delete-me &&
test refs/heads/delete-me = "$(git symbolic-ref HEAD)" &&
test_must_fail git checkout --track -b track'
test_expect_success 'checkout w/--track from non-branch HEAD fails' '
git checkout master^0 &&
test_must_fail git symbolic-ref HEAD &&
test_must_fail git checkout --track -b track &&
test_must_fail git rev-parse --verify track &&
test_must_fail git symbolic-ref HEAD &&
test "z$(git rev-parse master^0)" = "z$(git rev-parse HEAD)"
'

test_expect_success 'checkout an unmerged path should fail' '
rm -f .git/index &&
Expand Down

0 comments on commit 51a94af

Please sign in to comment.