Commit 183d8bddeb859a27ee688dac53ea26ccc547d05c

Ben Straub 2012-10-16T20:33:48

Remove checkout_stats from git_clone

diff --git a/include/git2/clone.h b/include/git2/clone.h
index c34a9ae..72294c5 100644
--- a/include/git2/clone.h
+++ b/include/git2/clone.h
@@ -41,7 +41,6 @@ GIT_EXTERN(int) git_clone(
 		const char *origin_url,
 		const char *workdir_path,
 		git_indexer_stats *fetch_stats,
-		git_indexer_stats *checkout_stats,
 		git_checkout_opts *checkout_opts);
 
 /**
diff --git a/src/clone.c b/src/clone.c
index b84cd8d..2000de6 100644
--- a/src/clone.c
+++ b/src/clone.c
@@ -307,7 +307,6 @@ static int clone_internal(
 	const char *origin_url,
 	const char *path,
 	git_indexer_stats *fetch_stats,
-	git_indexer_stats *checkout_stats,
 	git_checkout_opts *checkout_opts,
 	bool is_bare)
 {
@@ -351,7 +350,6 @@ int git_clone_bare(git_repository **out,
 		dest_path,
 		fetch_stats,
 		NULL,
-		NULL,
 		1);
 }
 
@@ -360,7 +358,6 @@ int git_clone(git_repository **out,
 				  const char *origin_url,
 				  const char *workdir_path,
 				  git_indexer_stats *fetch_stats,
-				  git_indexer_stats *checkout_stats,
 				  git_checkout_opts *checkout_opts)
 {
 	assert(out && origin_url && workdir_path);
@@ -370,7 +367,6 @@ int git_clone(git_repository **out,
 		origin_url,
 		workdir_path,
 		fetch_stats,
-		checkout_stats,
 		checkout_opts,
 		0);
 }
diff --git a/tests-clar/clone/network.c b/tests-clar/clone/network.c
index 1ebdfb5..72be074 100644
--- a/tests-clar/clone/network.c
+++ b/tests-clar/clone/network.c
@@ -29,7 +29,7 @@ void test_clone_network__network_full(void)
 
 	cl_set_cleanup(&cleanup_repository, "./test2");
 
-	cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./test2", NULL, NULL, NULL));
+	cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./test2", NULL, NULL));
 	cl_assert(!git_repository_is_bare(g_repo));
 	cl_git_pass(git_remote_load(&origin, g_repo, "origin"));
 
@@ -55,7 +55,7 @@ void test_clone_network__cope_with_already_existing_directory(void)
 	cl_set_cleanup(&cleanup_repository, "./foo");
 
 	p_mkdir("./foo", GIT_DIR_MODE);
-	cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL, NULL));
+	cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL));
 	git_repository_free(g_repo); g_repo = NULL;
 }
 
@@ -65,7 +65,7 @@ void test_clone_network__empty_repository(void)
 
 	cl_set_cleanup(&cleanup_repository, "./empty");
 
-	cl_git_pass(git_clone(&g_repo, LIVE_EMPTYREPO_URL, "./empty", NULL, NULL, NULL));
+	cl_git_pass(git_clone(&g_repo, LIVE_EMPTYREPO_URL, "./empty", NULL, NULL));
 
 	cl_assert_equal_i(true, git_repository_is_empty(g_repo));
 	cl_assert_equal_i(true, git_repository_head_orphan(g_repo));
@@ -83,7 +83,7 @@ void test_clone_network__can_prevent_the_checkout_of_a_standard_repo(void)
 
 	cl_set_cleanup(&cleanup_repository, "./no-checkout");
 
-	cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./no-checkout", NULL, NULL, NULL));
+	cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./no-checkout", NULL, NULL));
 
 	cl_git_pass(git_buf_joinpath(&path, git_repository_workdir(g_repo), "master.txt"));
 	cl_assert_equal_i(false, git_path_isfile(git_buf_cstr(&path)));
@@ -91,18 +91,27 @@ void test_clone_network__can_prevent_the_checkout_of_a_standard_repo(void)
 	git_buf_free(&path);
 }
 
+static void progress(const char *path, float progress, void *payload)
+{
+	GIT_UNUSED(path); GIT_UNUSED(progress);
+	bool *was_called = (bool*)payload;
+	(*was_called) = true;
+}
+
 void test_clone_network__can_checkout_a_cloned_repo(void)
 {
-	git_checkout_opts opts;
+	git_checkout_opts opts = {0};
 	git_buf path = GIT_BUF_INIT;
 	git_reference *head;
+	bool progress_cb_was_called = false;
 
-	memset(&opts, 0, sizeof(opts));
 	opts.checkout_strategy = GIT_CHECKOUT_CREATE_MISSING;
+	opts.progress_cb = &progress;
+	opts.progress_payload = &progress_cb_was_called;
 
 	cl_set_cleanup(&cleanup_repository, "./default-checkout");
 
-	cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./default-checkout", NULL, NULL, &opts));
+	cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./default-checkout", NULL, &opts));
 
 	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)));
@@ -111,6 +120,8 @@ void test_clone_network__can_checkout_a_cloned_repo(void)
 	cl_assert_equal_i(GIT_REF_SYMBOLIC, git_reference_type(head));
 	cl_assert_equal_s("refs/heads/master", git_reference_target(head));
 
+	cl_assert_equal_i(true, progress_cb_was_called);
+
 	git_reference_free(head);
 	git_buf_free(&path);
 }
diff --git a/tests-clar/clone/nonetwork.c b/tests-clar/clone/nonetwork.c
index 81f95b9..b8d0ac1 100644
--- a/tests-clar/clone/nonetwork.c
+++ b/tests-clar/clone/nonetwork.c
@@ -63,7 +63,7 @@ static void build_local_file_url(git_buf *out, const char *fixture)
 void test_clone_nonetwork__bad_url(void)
 {
 	/* Clone should clean up the mess if the URL isn't a git repository */
-	cl_git_fail(git_clone(&g_repo, "not_a_repo", "./foo", NULL, NULL, NULL));
+	cl_git_fail(git_clone(&g_repo, "not_a_repo", "./foo", NULL, 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.git"));
@@ -77,7 +77,7 @@ void test_clone_nonetwork__local(void)
 #if DO_LOCAL_TEST
 	cl_set_cleanup(&cleanup_repository, "./local");
 
-	cl_git_pass(git_clone(&g_repo, git_buf_cstr(&src), "./local", NULL, NULL, NULL));
+	cl_git_pass(git_clone(&g_repo, git_buf_cstr(&src), "./local", NULL, NULL));
 #endif
 
 	git_buf_free(&src);
@@ -102,7 +102,7 @@ void test_clone_nonetwork__fail_when_the_target_is_a_file(void)
 	cl_set_cleanup(&cleanup_repository, "./foo");
 
 	cl_git_mkfile("./foo", "Bar!");
-	cl_git_fail(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL, NULL));
+	cl_git_fail(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL));
 }
 
 void test_clone_nonetwork__fail_with_already_existing_but_non_empty_directory(void)
@@ -111,5 +111,5 @@ void test_clone_nonetwork__fail_with_already_existing_but_non_empty_directory(vo
 
 	p_mkdir("./foo", GIT_DIR_MODE);
 	cl_git_mkfile("./foo/bar", "Baz!");
-	cl_git_fail(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL, NULL));
+	cl_git_fail(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL));
 }