diff options
author | Ben Straub <bstraub@github.com> | 2012-07-31 19:49:19 -0700 |
---|---|---|
committer | Ben Straub <bstraub@github.com> | 2012-07-31 19:49:19 -0700 |
commit | 5f4d2f9f6574fd41d9340ef80de0813bde80b76d (patch) | |
tree | 1c8e95f2816c8f1024df2b5c177be58bcf9972e8 | |
parent | 5280f4e6983555e9ae111a6cb10765c7635e7e12 (diff) | |
download | libgit2-5f4d2f9f6574fd41d9340ef80de0813bde80b76d.tar.gz |
Checkout: fix problem with detached HEAD.
-rw-r--r-- | src/checkout.c | 7 | ||||
-rw-r--r-- | tests-clar/checkout/checkout.c | 5 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/checkout.c b/src/checkout.c index e8fba79a0..252d9c4ae 100644 --- a/src/checkout.c +++ b/src/checkout.c @@ -216,15 +216,12 @@ int git_checkout_reference(git_reference *ref, git_reference *head = NULL; int retcode = GIT_ERROR; - if ((retcode = git_reference_lookup(&head, repo, GIT_HEAD_FILE)) < 0) + if ((retcode = git_reference_create_symbolic(&head, repo, GIT_HEAD_FILE, + git_reference_name(ref), true)) < 0) return retcode; - if ((retcode = git_reference_set_target(head, git_reference_name(ref))) < 0) - goto gcr_cleanup; - retcode = git_checkout_head(git_reference_owner(ref), opts, stats); -gcr_cleanup: git_reference_free(head); return retcode; } diff --git a/tests-clar/checkout/checkout.c b/tests-clar/checkout/checkout.c index 3a27fe5c1..af3bae9ef 100644 --- a/tests-clar/checkout/checkout.c +++ b/tests-clar/checkout/checkout.c @@ -177,3 +177,8 @@ void test_checkout_checkout__open_flags(void) cl_git_pass(git_checkout_head(g_repo, &opts, NULL)); test_file_contents("./testrepo/new.txt", "hi\nmy new file\n"); } + +void test_checkout_checkout__detached_head(void) +{ + /* TODO: write this when git_checkout_commit is implemented. */ +} |