Commit d27bf6656158c6be1eca7e8c5e87b4d39958b18d

nulltoken 2012-05-30T00:50:39

remote: Make git_remote_add() generate a default refspec with a force update specifier

diff --git a/src/remote.c b/src/remote.c
index deb7350..5993ad0 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -494,7 +494,7 @@ int git_remote_add(git_remote **out, git_repository *repo, const char *name, con
 {
 	git_buf buf = GIT_BUF_INIT;
 
-	if (git_buf_printf(&buf, "refs/heads/*:refs/remotes/%s/*", name) < 0)
+	if (git_buf_printf(&buf, "+refs/heads/*:refs/remotes/%s/*", name) < 0)
 		return -1;
 
 	if (git_remote_new(out, repo, name, url, git_buf_cstr(&buf)) < 0)
diff --git a/tests-clar/network/remotes.c b/tests-clar/network/remotes.c
index b3a0265..3f63183 100644
--- a/tests-clar/network/remotes.c
+++ b/tests-clar/network/remotes.c
@@ -160,6 +160,15 @@ void test_network_remotes__loading_a_missing_remote_returns_ENOTFOUND(void)
 	cl_assert_equal_i(GIT_ENOTFOUND, git_remote_load(&_remote, _repo, "just-left-few-minutes-ago"));
 }
 
+/*
+ * $ git remote add addtest http://github.com/libgit2/libgit2
+ *
+ * $ cat .git/config
+ * [...]
+ * [remote "addtest"]
+ *         url = http://github.com/libgit2/libgit2
+ *         fetch = +refs/heads/*:refs/remotes/addtest/*
+ */
 void test_network_remotes__add(void)
 {
 	git_remote_free(_remote);
@@ -169,5 +178,6 @@ void test_network_remotes__add(void)
 	cl_git_pass(git_remote_load(&_remote, _repo, "addtest"));
 	_refspec = git_remote_fetchspec(_remote);
 	cl_assert(!strcmp(git_refspec_src(_refspec), "refs/heads/*"));
+	cl_assert(git_refspec_force(_refspec) == 1);
 	cl_assert(!strcmp(git_refspec_dst(_refspec), "refs/remotes/addtest/*"));
 }