Commit 617bfdf4 by Carlos Martín Nieto

Add a name to a remote created from the API

Make it a bit more resilient.

Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
parent 95057b85
...@@ -28,16 +28,18 @@ GIT_BEGIN_DECL ...@@ -28,16 +28,18 @@ GIT_BEGIN_DECL
*/ */
/** /**
* Create a new unnamed remote * Create a remote in memory
* *
* Useful when you don't want to store the remote * Create a remote with the default refspecs in memory. You can use
* this when you have a URL instead of a remote's name.
* *
* @param out pointer to the new remote object * @param out pointer to the new remote object
* @param repo the associtated repository * @param repo the associtated repository
* @param url the remote repository's URL * @param url the remote repository's URL
* @param name the remote's name
* @return GIT_SUCCESS or an error code * @return GIT_SUCCESS or an error code
*/ */
int git_remote_new(git_remote **out, git_repository *repo, const char *url); int git_remote_new(git_remote **out, git_repository *repo, const char *url, const char *name);
/** /**
* Get the information for a particular remote * Get the information for a particular remote
......
...@@ -56,22 +56,34 @@ static int parse_remote_refspec(git_config *cfg, git_refspec *refspec, const cha ...@@ -56,22 +56,34 @@ static int parse_remote_refspec(git_config *cfg, git_refspec *refspec, const cha
return refspec_parse(refspec, val); return refspec_parse(refspec, val);
} }
int git_remote_new(git_remote **out, git_repository *repo, const char *url) int git_remote_new(git_remote **out, git_repository *repo, const char *url, const char *name)
{ {
git_remote *remote; git_remote *remote;
if (url == NULL)
return git__throw(GIT_EINVALIDARGS, "No URL was given");
remote = git__malloc(sizeof(git_remote)); remote = git__malloc(sizeof(git_remote));
if (remote == NULL) if (remote == NULL)
return GIT_ENOMEM; return GIT_ENOMEM;
memset(remote, 0x0, sizeof(git_remote)); memset(remote, 0x0, sizeof(git_remote));
remote->repo = repo; remote->repo = repo;
remote->url = git__strdup(url); remote->url = git__strdup(url);
if (remote->url == NULL) { if (remote->url == NULL) {
git__free(remote); git__free(remote);
return GIT_ENOMEM; return GIT_ENOMEM;
} }
if (name != NULL) {
remote->name = git__strdup(name);
if (remote->name == NULL) {
git__free(remote);
return GIT_ENOMEM;
}
}
*out = remote; *out = remote;
return GIT_SUCCESS; return GIT_SUCCESS;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment