diff options
author | Carlos Martín Nieto <carlos@cmartin.tk> | 2011-08-03 22:03:57 +0200 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2011-08-18 02:34:08 +0200 |
commit | 44daec422950e0227a863021b6bf4fb8554b6c9c (patch) | |
tree | a5d4fd1811200714072b6c63a83df5a5b7a26afd /src | |
parent | da2902204b12e4ba2ad218590f0826a8b8c1badc (diff) | |
download | libgit2-44daec422950e0227a863021b6bf4fb8554b6c9c.tar.gz |
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/config.h | 2 | ||||
-rw-r--r-- | src/fetch.c | 10 | ||||
-rw-r--r-- | src/remote.c | 1 | ||||
-rw-r--r-- | src/remote.h | 1 | ||||
-rw-r--r-- | src/repository.c | 1 |
5 files changed, 11 insertions, 4 deletions
diff --git a/src/config.h b/src/config.h index 673887e39..e2f301bf1 100644 --- a/src/config.h +++ b/src/config.h @@ -4,12 +4,14 @@ #include "git2.h" #include "git2/config.h" #include "vector.h" +#include "repository.h" #define GIT_CONFIG_FILENAME ".gitconfig" #define GIT_CONFIG_FILENAME_INREPO "config" struct git_config { git_vector files; + git_repository *repo; }; #endif diff --git a/src/fetch.c b/src/fetch.c index 522625ef0..5dc044065 100644 --- a/src/fetch.c +++ b/src/fetch.c @@ -48,11 +48,12 @@ static int whn_cmp(const void *a, const void *b) * FIXME: we assume that the transport has been connected, enforce * 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_headarray refs; git_transport *t = remote->transport; + git_repository *repo = remote->repo; const git_refspec *spec; int error; unsigned int i; @@ -136,13 +137,14 @@ cleanup: * them out. When we get an ACK we hide that commit and continue * 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; int error; unsigned int i; git_reference *ref; git_strarray refs; + git_repository *repo = remote->repo; git_oid oid; /* Don't try to negotiate when we don't want anything */ @@ -195,7 +197,7 @@ cleanup: 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); } diff --git a/src/remote.c b/src/remote.c index 2812f5de6..809bfbb57 100644 --- a/src/remote.c +++ b/src/remote.c @@ -110,6 +110,7 @@ int git_remote_get(git_remote **out, git_config *cfg, const char *name) goto cleanup; } + remote->repo = cfg->repo; remote->url = git__strdup(val); if (remote->url == NULL) { error = GIT_ENOMEM; diff --git a/src/remote.h b/src/remote.h index 129671fd2..b94193c8f 100644 --- a/src/remote.h +++ b/src/remote.h @@ -11,6 +11,7 @@ struct git_remote { struct git_refspec fetch; struct git_refspec push; git_transport *transport; + git_repository *repo; }; #endif diff --git a/src/repository.c b/src/repository.c index cb62d9eb6..c0e99bb24 100644 --- a/src/repository.c +++ b/src/repository.c @@ -317,6 +317,7 @@ int git_repository_config( goto cleanup; } + (*out)->repo = repo; return GIT_SUCCESS; cleanup: |