summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Straub <bs@github.com>2013-04-23 12:28:59 -0700
committerBen Straub <bs@github.com>2013-04-23 12:28:59 -0700
commitbd0a07f4bb0b83a84127589f7385eb2309910b66 (patch)
tree19ecda9ac464999a22cd7a1e186a73c567d430c6
parent495d6f07c44c48e9968eb82f65c3336ba1922398 (diff)
downloadlibgit2-bd0a07f4bb0b83a84127589f7385eb2309910b66.tar.gz
Clone: replace fetch spec with custom value
-rw-r--r--src/clone.c8
-rw-r--r--tests-clar/clone/nonetwork.c2
2 files changed, 6 insertions, 4 deletions
diff --git a/src/clone.c b/src/clone.c
index 8f10ca819..0665576e3 100644
--- a/src/clone.c
+++ b/src/clone.c
@@ -323,9 +323,11 @@ static int create_and_configure_origin(
(error = git_remote_set_callbacks(origin, options->remote_callbacks)) < 0)
goto on_error;
- if (options->fetch_spec &&
- (error = git_remote_add_fetch(origin, options->fetch_spec)) < 0)
- goto on_error;
+ if (options->fetch_spec) {
+ git_remote_clear_refspecs(origin);
+ if ((error = git_remote_add_fetch(origin, options->fetch_spec)) < 0)
+ goto on_error;
+ }
if (options->push_spec &&
(error = git_remote_add_push(origin, options->push_spec)) < 0)
diff --git a/tests-clar/clone/nonetwork.c b/tests-clar/clone/nonetwork.c
index 506673737..02066e07d 100644
--- a/tests-clar/clone/nonetwork.c
+++ b/tests-clar/clone/nonetwork.c
@@ -149,7 +149,7 @@ void test_clone_nonetwork__custom_fetch_spec(void)
cl_git_pass(git_clone(&g_repo, cl_git_fixture_url("testrepo.git"), "./foo", &g_options));
cl_git_pass(git_remote_load(&g_remote, g_repo, "origin"));
- actual_fs = git_vector_get(&g_remote->refspecs, g_remote->refspecs.length - 1);
+ actual_fs = git_vector_get(&g_remote->refspecs, 0);
cl_assert_equal_s("refs/heads/master", git_refspec_src(actual_fs));
cl_assert_equal_s("refs/heads/foo", git_refspec_dst(actual_fs));