summaryrefslogtreecommitdiff
path: root/src/remote.c
diff options
context:
space:
mode:
authorVicent Martí <vicent@github.com>2013-11-14 07:21:47 -0800
committerVicent Martí <vicent@github.com>2013-11-14 07:21:47 -0800
commit7b947bf5cc59eefa83c28eb5f5fd8434207ebb8b (patch)
treee3158d9445263156684b0e78ea991778ec9b92ea /src/remote.c
parent98eaf39a87164eeb284df5c0239c3a31dfb538e7 (diff)
parent886cc447389da78885a909a96b43ddbe67c9807f (diff)
downloadlibgit2-7b947bf5cc59eefa83c28eb5f5fd8434207ebb8b.tar.gz
Merge pull request #1951 from victorgp/create-remote-plus-fetch
Allowing create remotes with custom fetch spec
Diffstat (limited to 'src/remote.c')
-rw-r--r--src/remote.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/remote.c b/src/remote.c
index 62f297a7e..c0f35e5ea 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -209,6 +209,36 @@ on_error:
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;
+
+ 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_inmemory(git_remote **out, git_repository *repo, const char *fetch, const char *url)
{
int error;