Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Garcia <victor@tuenti.com>2013-11-08 15:14:31 +0400
committerVictor Garcia <victor@tuenti.com>2013-11-08 15:14:31 +0400
commit40b99d05b4a1221768c25c889180c12d2f43be8b (patch)
tree6fbf4f41fb843571598025a1d123899b0233c873 /src/remote.c
parent99feb98897fa1daa0ff3fd70b17ccc9d9a51f1d0 (diff)
splitting funcionality in two methods to avoid ambiguity with NULL
Diffstat (limited to 'src/remote.c')
-rw-r--r--src/remote.c39
1 files changed, 33 insertions, 6 deletions
diff --git a/src/remote.c b/src/remote.c
index b812c91dd..b97cc9e79 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -174,7 +174,7 @@ static int ensure_remote_doesnot_exist(git_repository *repo, const char *name)
}
-int git_remote_create(git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch)
+int git_remote_create(git_remote **out, git_repository *repo, const char *name, const char *url)
{
git_buf buf = GIT_BUF_INIT;
git_remote *remote = NULL;
@@ -186,11 +186,38 @@ int git_remote_create(git_remote **out, git_repository *repo, const char *name,
if ((error = ensure_remote_doesnot_exist(repo, name)) < 0)
return error;
- if (fetch == NULL) {
- if (git_buf_printf(&buf, "+refs/heads/*:refs/remotes/%s/*", name) < 0)
- return -1;
- fetch = git_buf_cstr(&buf);
- }
+ if (git_buf_printf(&buf, "+refs/heads/*:refs/remotes/%s/*", name) < 0)
+ return -1;
+
+ if (create_internal(&remote, repo, name, url, git_buf_cstr(&buf)) < 0)
+ goto on_error;
+
+ git_buf_free(&buf);
+
+ if (git_remote_save(remote) < 0)
+ goto on_error;
+
+ *out = remote;
+
+ return 0;
+
+on_error:
+ git_buf_free(&buf);
+ git_remote_free(remote);
+ return -1;
+}
+
+int git_remote_create_with_fetchspec(git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch)
+{
+ git_buf buf = GIT_BUF_INIT;
+ git_remote *remote = NULL;
+ int error;
+
+ if ((error = ensure_remote_name_is_valid(name)) < 0)
+ return error;
+
+ if ((error = ensure_remote_doesnot_exist(repo, name)) < 0)
+ return error;
if (create_internal(&remote, repo, name, url, fetch) < 0)
goto on_error;