From 9554cd514c2a0acd6c9df255b457356873ab16b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Fri, 24 Feb 2012 12:14:26 +0100 Subject: [PATCH] A remote exists with an URL alone We used to consider it an error if a remote didn't have at least a fetch refspec. This was too much checking, as a remote doesn't in fact need to have anything other than an URL configured to be considered a remote. --- src/remote.c | 3 +++ tests-clar/network/remotes.c | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/remote.c b/src/remote.c index 91622a894..3e0dbf051 100644 --- a/src/remote.c +++ b/src/remote.c @@ -150,6 +150,9 @@ int git_remote_load(git_remote **out, git_repository *repo, const char *name) } error = parse_remote_refspec(config, &remote->fetch, git_buf_cstr(&buf)); + if (error == GIT_ENOTFOUND) + error = GIT_SUCCESS; + if (error < GIT_SUCCESS) { error = git__rethrow(error, "Failed to get fetch refspec"); goto cleanup; diff --git a/tests-clar/network/remotes.c b/tests-clar/network/remotes.c index beb0bcc8c..cc453e36a 100644 --- a/tests-clar/network/remotes.c +++ b/tests-clar/network/remotes.c @@ -101,3 +101,16 @@ void test_network_remotes__transform_r(void) cl_assert(!strcmp(git_buf_cstr(&buf), "refs/remotes/test/master")); git_buf_free(&buf); } + +void test_network_remotes__missing_refspecs(void) +{ + git_config *cfg; + + git_remote_free(_remote); + + cl_git_pass(git_repository_config(&cfg, _repo)); + cl_git_pass(git_config_set_string(cfg, "remote.specless.url", "http://example.com")); + cl_git_pass(git_remote_load(&_remote, _repo, "specless")); + + git_config_free(cfg); +}