diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2014-07-03 07:56:31 +0200 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2014-09-30 15:42:32 +0200 |
commit | 2cdd5c5752f1dea43cd31be9b75be7f7f5e4eab1 (patch) | |
tree | 2c51c04613a7c6849137f178d04a9f48df74e0a0 | |
parent | c300d84a64601b09abcf0f2d2e6d492b4578770d (diff) | |
download | libgit2-2cdd5c5752f1dea43cd31be9b75be7f7f5e4eab1.tar.gz |
remote: store passive refspecs
The configured/base fetch refspecs need to be taken into account in
order to implement opportunistic remote-tracking branch updates. DWIM
them and store them in the struct, but don't do anything with them yet.
-rw-r--r-- | src/remote.c | 10 | ||||
-rw-r--r-- | src/remote.h | 1 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/remote.c b/src/remote.c index b3e968e2e..c164db909 100644 --- a/src/remote.c +++ b/src/remote.c @@ -375,6 +375,7 @@ int git_remote_load(git_remote **out, git_repository *repo, const char *name) if (git_vector_init(&remote->refs, 32, NULL) < 0 || git_vector_init(&remote->refspecs, 2, NULL) < 0 || + git_vector_init(&remote->passive_refspecs, 2, NULL) < 0 || git_vector_init(&remote->active_refspecs, 2, NULL) < 0) { error = -1; goto cleanup; @@ -843,9 +844,13 @@ int git_remote_download(git_remote *remote, const git_strarray *refspecs) to_active = &specs; } - free_refspecs(&remote->active_refspecs); + free_refspecs(&remote->passive_refspecs); + if ((error = dwim_refspecs(&remote->passive_refspecs, &remote->refspecs, &refs)) < 0) + goto on_error; + free_refspecs(&remote->active_refspecs); error = dwim_refspecs(&remote->active_refspecs, to_active, &refs); + git_vector_free(&refs); free_refspecs(&specs); git_vector_free(&specs); @@ -1218,6 +1223,9 @@ void git_remote_free(git_remote *remote) free_refspecs(&remote->active_refspecs); git_vector_free(&remote->active_refspecs); + free_refspecs(&remote->passive_refspecs); + git_vector_free(&remote->passive_refspecs); + git__free(remote->url); git__free(remote->pushurl); git__free(remote->name); diff --git a/src/remote.h b/src/remote.h index f88601e9b..73c1614f6 100644 --- a/src/remote.h +++ b/src/remote.h @@ -23,6 +23,7 @@ struct git_remote { git_vector refs; git_vector refspecs; git_vector active_refspecs; + git_vector passive_refspecs; git_transport_cb transport_cb; void *transport_cb_payload; git_transport *transport; |