mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-05 18:38:34 +00:00
Remotes: Load/Save for fetch.foo.pushurl
This commit is contained in:
parent
cb020f0d99
commit
3ed4b5012b
32
src/remote.c
32
src/remote.c
@ -130,6 +130,26 @@ int git_remote_load(git_remote **out, git_repository *repo, const char *name)
|
|||||||
remote->url = git__strdup(val);
|
remote->url = git__strdup(val);
|
||||||
GITERR_CHECK_ALLOC(remote->url);
|
GITERR_CHECK_ALLOC(remote->url);
|
||||||
|
|
||||||
|
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);
|
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;
|
||||||
@ -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)
|
|||||||
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 @@
|
|||||||
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user