Commit 3ed4b501 by Sascha Cunz

Remotes: Load/Save for fetch.foo.pushurl

parent cb020f0d
...@@ -131,6 +131,26 @@ int git_remote_load(git_remote **out, git_repository *repo, const char *name) ...@@ -131,6 +131,26 @@ int git_remote_load(git_remote **out, git_repository *repo, const char *name)
GITERR_CHECK_ALLOC(remote->url); GITERR_CHECK_ALLOC(remote->url);
git_buf_clear(&buf); git_buf_clear(&buf);
if (git_buf_printf(&buf, "remote.%s.pushurl", name) < 0) {
error = -1;
goto cleanup;
}
error = git_config_get_string(&val, config, git_buf_cstr(&buf));
if (error == GIT_ENOTFOUND)
error = 0;
if (error < 0) {
error = -1;
goto cleanup;
}
if (val) {
remote->pushurl = git__strdup(val);
GITERR_CHECK_ALLOC(remote->pushurl);
}
git_buf_clear(&buf);
if (git_buf_printf(&buf, "remote.%s.fetch", name) < 0) { if (git_buf_printf(&buf, "remote.%s.fetch", name) < 0) {
error = -1; error = -1;
goto cleanup; goto cleanup;
...@@ -187,6 +207,17 @@ int git_remote_save(const git_remote *remote) ...@@ -187,6 +207,17 @@ int git_remote_save(const git_remote *remote)
return -1; return -1;
} }
if (remote->pushurl) {
git_buf_clear(&buf);
if (git_buf_printf(&buf, "remote.%s.pushurl", remote->name) < 0)
return -1;
if (git_config_set_string(config, git_buf_cstr(&buf), remote->pushurl) < 0) {
git_buf_free(&buf);
return -1;
}
}
if (remote->fetch.src != NULL && remote->fetch.dst != NULL) { if (remote->fetch.src != NULL && remote->fetch.dst != NULL) {
git_buf_clear(&buf); git_buf_clear(&buf);
git_buf_clear(&value); git_buf_clear(&value);
...@@ -429,6 +460,7 @@ void git_remote_free(git_remote *remote) ...@@ -429,6 +460,7 @@ void git_remote_free(git_remote *remote)
git__free(remote->push.src); git__free(remote->push.src);
git__free(remote->push.dst); git__free(remote->push.dst);
git__free(remote->url); git__free(remote->url);
git__free(remote->pushurl);
git__free(remote->name); git__free(remote->name);
git__free(remote); git__free(remote);
} }
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
struct git_remote { struct git_remote {
char *name; char *name;
char *url; char *url;
char *pushurl;
git_vector refs; git_vector refs;
struct git_refspec fetch; struct git_refspec fetch;
struct git_refspec push; struct git_refspec push;
......
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