Commit c4f68b32 by nulltoken

clone: fix detection of remote HEAD

parent 4d968f13
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "common.h" #include "common.h"
#include "remote.h" #include "remote.h"
#include "pkt.h"
#include "fileops.h" #include "fileops.h"
#include "refs.h" #include "refs.h"
#include "path.h" #include "path.h"
...@@ -174,6 +175,7 @@ static int update_head_to_remote(git_repository *repo, git_remote *remote) ...@@ -174,6 +175,7 @@ static int update_head_to_remote(git_repository *repo, git_remote *remote)
{ {
int retcode = -1; int retcode = -1;
git_remote_head *remote_head; git_remote_head *remote_head;
git_pkt_ref *pkt;
struct head_info head_info; struct head_info head_info;
git_buf remote_master_name = GIT_BUF_INIT; git_buf remote_master_name = GIT_BUF_INIT;
...@@ -187,7 +189,8 @@ static int update_head_to_remote(git_repository *repo, git_remote *remote) ...@@ -187,7 +189,8 @@ static int update_head_to_remote(git_repository *repo, git_remote *remote)
} }
/* Get the remote's HEAD. This is always the first ref in remote->refs. */ /* Get the remote's HEAD. This is always the first ref in remote->refs. */
remote_head = remote->refs.contents[0]; pkt = remote->transport->refs.contents[0];
remote_head = &pkt->head;
git_oid_cpy(&head_info.remote_head_oid, &remote_head->oid); git_oid_cpy(&head_info.remote_head_oid, &remote_head->oid);
git_buf_init(&head_info.branchname, 16); git_buf_init(&head_info.branchname, 16);
head_info.repo = repo; head_info.repo = repo;
......
...@@ -89,6 +89,7 @@ void test_clone_network__can_checkout_a_cloned_repo(void) ...@@ -89,6 +89,7 @@ void test_clone_network__can_checkout_a_cloned_repo(void)
{ {
git_checkout_opts opts; git_checkout_opts opts;
git_buf path = GIT_BUF_INIT; git_buf path = GIT_BUF_INIT;
git_reference *head;
memset(&opts, 0, sizeof(opts)); memset(&opts, 0, sizeof(opts));
opts.checkout_strategy = GIT_CHECKOUT_CREATE_MISSING; opts.checkout_strategy = GIT_CHECKOUT_CREATE_MISSING;
...@@ -99,4 +100,8 @@ void test_clone_network__can_checkout_a_cloned_repo(void) ...@@ -99,4 +100,8 @@ void test_clone_network__can_checkout_a_cloned_repo(void)
cl_git_pass(git_buf_joinpath(&path, git_repository_workdir(g_repo), "master.txt")); cl_git_pass(git_buf_joinpath(&path, git_repository_workdir(g_repo), "master.txt"));
cl_assert_equal_i(true, git_path_isfile(git_buf_cstr(&path))); cl_assert_equal_i(true, git_path_isfile(git_buf_cstr(&path)));
cl_git_pass(git_reference_lookup(&head, g_repo, "HEAD"));
cl_assert_equal_i(GIT_REF_SYMBOLIC, git_reference_type(head));
cl_assert_equal_s("refs/heads/master", git_reference_target(head));
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment