Commit f2a855d5fe9824ceea8bf8b27e82bdf2d6846855

Ben Straub 2012-06-19T20:37:12

Clone: restructure.

diff --git a/src/clone.c b/src/clone.c
index 13572d9..def1c0f 100644
--- a/src/clone.c
+++ b/src/clone.c
@@ -19,8 +19,9 @@
 GIT_BEGIN_DECL
 
 
-static int git_checkout(git_repository *repo, git_commit *commit, git_indexer_stats *stats)
+static int git_checkout_branch(git_repository *repo, const char *branchname)
 {
+  /* TODO */
   return 0;
 }
 
@@ -31,7 +32,9 @@ static int git_checkout(git_repository *repo, git_commit *commit, git_indexer_st
 
 
 
-static int setup_remotes_and_fetch(git_repository *repo, const char *origin_url, git_indexer_stats *stats)
+static int setup_remotes_and_fetch(git_repository *repo,
+                                   const char *origin_url,
+                                   git_indexer_stats *stats)
 {
   int retcode = GIT_ERROR;
   git_remote *origin = NULL;
@@ -55,11 +58,15 @@ static int setup_remotes_and_fetch(git_repository *repo, const char *origin_url,
   return retcode;
 }
 
-static int clone_internal(git_repository **out, const char *origin_url, const char *fullpath, git_indexer_stats *stats, int is_bare)
+static int clone_internal(git_repository **out,
+                          const char *origin_url,
+                          const char *fullpath,
+                          git_indexer_stats *stats,
+                          int is_bare)
 {
   int retcode = GIT_ERROR;
   git_repository *repo = NULL;
-  
+
   if (!(retcode = git_repository_init(&repo, fullpath, is_bare))) {
     if ((retcode = setup_remotes_and_fetch(repo, origin_url, stats)) < 0) {
       /* Failed to fetch; clean up */
@@ -70,25 +77,31 @@ static int clone_internal(git_repository **out, const char *origin_url, const ch
       retcode = 0;
     }
   }
-  
+
   return retcode;
 }
 
-int git_clone_bare(git_repository **out, const char *origin_url, const char *dest_path, git_indexer_stats *stats)
+int git_clone_bare(git_repository **out,
+                   const char *origin_url,
+                   const char *dest_path,
+                   git_indexer_stats *stats)
 {
   char fullpath[512] = {0};
-  
+
   p_realpath(dest_path, fullpath);
   if (git_path_exists(fullpath)) {
     giterr_set(GITERR_INVALID, "Destination already exists: %s", fullpath);
     return GIT_ERROR;
   }
-  
+
   return clone_internal(out, origin_url, fullpath, stats, 1);
 }
 
 
-int git_clone(git_repository **out, const char *origin_url, const char *workdir_path, git_indexer_stats *stats)
+int git_clone(git_repository **out,
+              const char *origin_url,
+              const char *workdir_path,
+              git_indexer_stats *stats)
 {
   int retcode = GIT_ERROR;
   char fullpath[512] = {0};
@@ -100,12 +113,9 @@ int git_clone(git_repository **out, const char *origin_url, const char *workdir_
   }
 
   if (!clone_internal(out, origin_url, workdir_path, stats, 0)) {
-    git_object *commit_to_checkout = NULL;
-    if (!git_revparse_single(&commit_to_checkout, *out, "master")) {
-      if (git_object_type(commit_to_checkout) == GIT_OBJ_COMMIT) {
-        retcode = git_checkout(*out, (git_commit*)commit_to_checkout, stats);
-      }
-    }
+    char default_branch_name[256] = "master";
+    /* TODO */
+    retcode = git_checkout_branch(*out, default_branch_name);
   }
 
   return retcode;
diff --git a/tests-clar/clone/clone.c b/tests-clar/clone/clone.c
index 7b7c7b8..1f7cdff 100644
--- a/tests-clar/clone/clone.c
+++ b/tests-clar/clone/clone.c
@@ -65,7 +65,7 @@ void test_clone_clone__bad_url(void)
   cl_git_fail(git_clone(&g_repo, "not_a_repo", "./foo", NULL));
   cl_assert(!git_path_exists("./foo"));
   cl_git_fail(git_clone_bare(&g_repo, "not_a_repo", "./foo.git", NULL));
-  cl_assert(!git_path_exists("./foo"));
+  cl_assert(!git_path_exists("./foo.git"));
 }
 
 
@@ -89,7 +89,11 @@ void test_clone_clone__network(void)
   cl_git_pass(git_clone(&g_repo,
                         "https://github.com/libgit2/libgit2.git",
                         "./libgit2", NULL));
+  cl_git_pass(git_clone_bare(&g_repo,
+                             "https://github.com/libgit2/libgit2.git",
+                             "./libgit2.git", NULL));
   git_futils_rmdir_r("./libgit2", GIT_DIRREMOVAL_FILES_AND_DIRS);
+  git_futils_rmdir_r("./libgit2.git", GIT_DIRREMOVAL_FILES_AND_DIRS);
 }