Commit 44daec42 by Carlos Martín Nieto Committed by Vicent Marti

Bind the configuration and remotes to a repository

Configurations when taken from a repository and remotes should be
identifiable as coming from a particular repository. This allows us to
reduce the amount of variables that the user has to keep track of.

Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
parent da290220
...@@ -4,12 +4,14 @@ ...@@ -4,12 +4,14 @@
#include "git2.h" #include "git2.h"
#include "git2/config.h" #include "git2/config.h"
#include "vector.h" #include "vector.h"
#include "repository.h"
#define GIT_CONFIG_FILENAME ".gitconfig" #define GIT_CONFIG_FILENAME ".gitconfig"
#define GIT_CONFIG_FILENAME_INREPO "config" #define GIT_CONFIG_FILENAME_INREPO "config"
struct git_config { struct git_config {
git_vector files; git_vector files;
git_repository *repo;
}; };
#endif #endif
...@@ -48,11 +48,12 @@ static int whn_cmp(const void *a, const void *b) ...@@ -48,11 +48,12 @@ static int whn_cmp(const void *a, const void *b)
* FIXME: we assume that the transport has been connected, enforce * FIXME: we assume that the transport has been connected, enforce
* that somehow, we also want to be called from _negotiate * that somehow, we also want to be called from _negotiate
*/ */
int git_fetch_list_want(git_headarray *whn_list, git_repository *repo, git_remote *remote) int git_fetch_list_want(git_headarray *whn_list, git_remote *remote)
{ {
git_vector list; git_vector list;
git_headarray refs; git_headarray refs;
git_transport *t = remote->transport; git_transport *t = remote->transport;
git_repository *repo = remote->repo;
const git_refspec *spec; const git_refspec *spec;
int error; int error;
unsigned int i; unsigned int i;
...@@ -136,13 +137,14 @@ cleanup: ...@@ -136,13 +137,14 @@ cleanup:
* them out. When we get an ACK we hide that commit and continue * them out. When we get an ACK we hide that commit and continue
* traversing until we're done * traversing until we're done
*/ */
int git_fetch_negotiate(git_headarray *list, git_repository *repo, git_remote *remote) int git_fetch_negotiate(git_headarray *list, git_remote *remote)
{ {
git_revwalk *walk; git_revwalk *walk;
int error; int error;
unsigned int i; unsigned int i;
git_reference *ref; git_reference *ref;
git_strarray refs; git_strarray refs;
git_repository *repo = remote->repo;
git_oid oid; git_oid oid;
/* Don't try to negotiate when we don't want anything */ /* Don't try to negotiate when we don't want anything */
...@@ -195,7 +197,7 @@ cleanup: ...@@ -195,7 +197,7 @@ cleanup:
return error; return error;
} }
int git_fetch_download_pack(git_remote *remote, git_repository *repo) int git_fetch_download_pack(git_remote *remote)
{ {
return git_transport_download_pack(remote->transport, repo); return git_transport_download_pack(remote->transport, remote->repo);
} }
...@@ -110,6 +110,7 @@ int git_remote_get(git_remote **out, git_config *cfg, const char *name) ...@@ -110,6 +110,7 @@ int git_remote_get(git_remote **out, git_config *cfg, const char *name)
goto cleanup; goto cleanup;
} }
remote->repo = cfg->repo;
remote->url = git__strdup(val); remote->url = git__strdup(val);
if (remote->url == NULL) { if (remote->url == NULL) {
error = GIT_ENOMEM; error = GIT_ENOMEM;
......
...@@ -11,6 +11,7 @@ struct git_remote { ...@@ -11,6 +11,7 @@ struct git_remote {
struct git_refspec fetch; struct git_refspec fetch;
struct git_refspec push; struct git_refspec push;
git_transport *transport; git_transport *transport;
git_repository *repo;
}; };
#endif #endif
...@@ -317,6 +317,7 @@ int git_repository_config( ...@@ -317,6 +317,7 @@ int git_repository_config(
goto cleanup; goto cleanup;
} }
(*out)->repo = repo;
return GIT_SUCCESS; return GIT_SUCCESS;
cleanup: cleanup:
......
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