Commit ae5b93629c148dc96de7337095fba4b1e901ee2b

Carlos Martín Nieto 2015-05-17T15:11:45

remote: remove fetch parameter from create_anonymous An anonymous remote is not configured and cannot therefore have configured refspecs. Remove the parameter which adds this from the constructor.

diff --git a/CHANGELOG.md b/CHANGELOG.md
index f9ec250..f226cda 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -183,6 +183,9 @@ support for HTTPS connections insead of OpenSSL.
   well as a boolean whether to write `FETCH_HEAD` and the autotag
   setting.
 
+* `git_remote_create_anonymous()` no longer takes a fetch refspec as
+  url-only remotes cannot have configured refspecs.
+
 * The `git_submodule_update_options` struct now has fetch options in
   the `fetch_opts` field instead of callbacks in the
   `remote_callbacks` field.
diff --git a/examples/network/fetch.c b/examples/network/fetch.c
index e47f5be..67444cb 100644
--- a/examples/network/fetch.c
+++ b/examples/network/fetch.c
@@ -92,7 +92,7 @@ int fetch(git_repository *repo, int argc, char **argv)
 	// Figure out whether it's a named remote or a URL
 	printf("Fetching %s for repo %p\n", argv[1], repo);
 	if (git_remote_lookup(&remote, repo, argv[1]) < 0) {
-		if (git_remote_create_anonymous(&remote, repo, argv[1], NULL) < 0)
+		if (git_remote_create_anonymous(&remote, repo, argv[1]) < 0)
 			return -1;
 	}
 
diff --git a/examples/network/ls-remote.c b/examples/network/ls-remote.c
index a260922..2102656 100644
--- a/examples/network/ls-remote.c
+++ b/examples/network/ls-remote.c
@@ -15,7 +15,7 @@ static int use_remote(git_repository *repo, char *name)
 	// Find the remote by name
 	error = git_remote_lookup(&remote, repo, name);
 	if (error < 0) {
-		error = git_remote_create_anonymous(&remote, repo, name, NULL);
+		error = git_remote_create_anonymous(&remote, repo, name);
 		if (error < 0)
 			goto cleanup;
 	}
diff --git a/include/git2/remote.h b/include/git2/remote.h
index 36e9deb..86498a3 100644
--- a/include/git2/remote.h
+++ b/include/git2/remote.h
@@ -63,24 +63,18 @@ GIT_EXTERN(int) git_remote_create_with_fetchspec(
 /**
  * Create an anonymous remote
  *
- * Create a remote with the given url and refspec in memory. You can use
- * this when you have a URL instead of a remote's name.  Note that anonymous
- * remotes cannot be converted to persisted remotes.
+ * Create a remote with the given url in-memory. You can use this when
+ * you have a URL instead of a remote's name.
  *
- * The name, when provided, will be checked for validity.
- * See `git_tag_create()` for rules about valid names.
- *
- * @param out pointer to the new remote object
+ * @param out pointer to the new remote objects
  * @param repo the associated repository
  * @param url the remote repository's URL
- * @param fetch the fetch refspec to use for this remote.
  * @return 0 or an error code
  */
 GIT_EXTERN(int) git_remote_create_anonymous(
 		git_remote **out,
 		git_repository *repo,
-		const char *url,
-		const char *fetch);
+		const char *url);
 
 /**
  * Get the information for a particular remote
diff --git a/src/remote.c b/src/remote.c
index c561ecd..d58927f 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -311,9 +311,9 @@ on_error:
 	return -1;
 }
 
-int git_remote_create_anonymous(git_remote **out, git_repository *repo, const char *url, const char *fetch)
+int git_remote_create_anonymous(git_remote **out, git_repository *repo, const char *url)
 {
-	return create_internal(out, repo, NULL, url, fetch);
+	return create_internal(out, repo, NULL, url, NULL);
 }
 
 int git_remote_dup(git_remote **dest, git_remote *source)
diff --git a/tests/network/remote/local.c b/tests/network/remote/local.c
index 9d96184..5d726c9 100644
--- a/tests/network/remote/local.c
+++ b/tests/network/remote/local.c
@@ -39,7 +39,7 @@ static void connect_to_local_repository(const char *local_repository)
 {
 	git_buf_sets(&file_path_buf, cl_git_path_url(local_repository));
 
-	cl_git_pass(git_remote_create_anonymous(&remote, repo, git_buf_cstr(&file_path_buf), NULL));
+	cl_git_pass(git_remote_create_anonymous(&remote, repo, git_buf_cstr(&file_path_buf)));
 	cl_git_pass(git_remote_connect(remote, GIT_DIRECTION_FETCH, NULL));
 }
 
@@ -71,7 +71,7 @@ void test_network_remote_local__retrieve_advertised_before_connect(void)
 
 	git_buf_sets(&file_path_buf, cl_git_path_url(cl_fixture("testrepo.git")));
 
-	cl_git_pass(git_remote_create_anonymous(&remote, repo, git_buf_cstr(&file_path_buf), NULL));
+	cl_git_pass(git_remote_create_anonymous(&remote, repo, git_buf_cstr(&file_path_buf)));
 	cl_git_fail(git_remote_ls(&refs, &refs_len, remote));
 }
 
@@ -213,7 +213,7 @@ void test_network_remote_local__push_to_bare_remote(void)
 	}
 
 	/* Connect to the bare repo */
-	cl_git_pass(git_remote_create_anonymous(&localremote, repo, "./localbare.git", NULL));
+	cl_git_pass(git_remote_create_anonymous(&localremote, repo, "./localbare.git"));
 	cl_git_pass(git_remote_connect(localremote, GIT_DIRECTION_PUSH, NULL));
 
 	/* Try to push */
@@ -252,7 +252,7 @@ void test_network_remote_local__push_to_bare_remote_with_file_url(void)
 	url = cl_git_path_url("./localbare.git");
 
 	/* Connect to the bare repo */
-	cl_git_pass(git_remote_create_anonymous(&localremote, repo, url, NULL));
+	cl_git_pass(git_remote_create_anonymous(&localremote, repo, url));
 	cl_git_pass(git_remote_connect(localremote, GIT_DIRECTION_PUSH, NULL));
 
 	/* Try to push */
@@ -289,7 +289,7 @@ void test_network_remote_local__push_to_non_bare_remote(void)
 	}
 
 	/* Connect to the bare repo */
-	cl_git_pass(git_remote_create_anonymous(&localremote, repo, "./localnonbare", NULL));
+	cl_git_pass(git_remote_create_anonymous(&localremote, repo, "./localnonbare"));
 	cl_git_pass(git_remote_connect(localremote, GIT_DIRECTION_PUSH, NULL));
 
 	/* Try to push */
diff --git a/tests/network/remote/remotes.c b/tests/network/remote/remotes.c
index f81c1cc..8619f2e 100644
--- a/tests/network/remote/remotes.c
+++ b/tests/network/remote/remotes.c
@@ -90,7 +90,7 @@ void test_network_remote_remotes__error_when_no_push_available(void)
 	};
 
 
-	cl_git_pass(git_remote_create_anonymous(&r, _repo, cl_fixture("testrepo.git"), NULL));
+	cl_git_pass(git_remote_create_anonymous(&r, _repo, cl_fixture("testrepo.git")));
 
 	callbacks.transport = git_transport_local;
 	cl_git_pass(git_remote_connect(r, GIT_DIRECTION_PUSH, &callbacks));
@@ -465,13 +465,3 @@ void test_network_remote_remotes__query_refspecs(void)
 	git_remote_free(remote);
 	git_remote_delete(_repo, "test");
 }
-
-void test_network_remote_remotes__fetch_from_anonymous(void)
-{
-	git_remote *remote;
-
-	cl_git_pass(git_remote_create_anonymous(&remote, _repo, cl_fixture("testrepo.git"),
-						"refs/heads/*:refs/other/*"));
-	cl_git_pass(git_remote_fetch(remote, NULL, NULL, NULL));
-	git_remote_free(remote);
-}