diff --git a/src/remote.c b/src/remote.c index deb73508d..5993ad02b 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 b3a0265e6..3f631835c 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/*")); }