diff options
author | Carlos Martín Nieto <carlos@cmartin.tk> | 2011-06-27 20:23:47 +0200 |
---|---|---|
committer | Carlos Martín Nieto <carlos@cmartin.tk> | 2011-06-27 20:23:47 +0200 |
commit | 0ac2726fdf945792028e59105d8630a91c5d3663 (patch) | |
tree | 29d40edaa6c723c3a8b2f82e81608168c224949c | |
parent | 5da5321d1753ed897a2597e4ad7ff1928aa7cbbc (diff) | |
download | libgit2-0ac2726fdf945792028e59105d8630a91c5d3663.tar.gz |
Slim down git_transport
Remove the unused repo and private pointers and make the direction a
flag, as it can only have two states. Change the connect signature to
use an int instead of git_net_direction and remove that enum.
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
-rw-r--r-- | include/git2/net.h | 6 | ||||
-rw-r--r-- | include/git2/remote.h | 2 | ||||
-rw-r--r-- | include/git2/transport.h | 2 | ||||
-rw-r--r-- | src/remote.c | 4 | ||||
-rw-r--r-- | src/transport.c | 4 | ||||
-rw-r--r-- | src/transport.h | 12 | ||||
-rw-r--r-- | src/transport_git.c | 5 | ||||
-rw-r--r-- | src/transport_local.c | 2 |
8 files changed, 14 insertions, 23 deletions
diff --git a/include/git2/net.h b/include/git2/net.h index fb09eb508..4bef90509 100644 --- a/include/git2/net.h +++ b/include/git2/net.h @@ -13,10 +13,8 @@ * gets called. */ -enum git_net_direction { - INTENT_PUSH, - INTENT_PULL -}; +#define GIT_DIR_FETCH 0 +#define GIT_DIR_PUSH 1 /* * This is what we give out on ->ls() diff --git a/include/git2/remote.h b/include/git2/remote.h index 9a988f36c..03e459569 100644 --- a/include/git2/remote.h +++ b/include/git2/remote.h @@ -64,7 +64,7 @@ GIT_EXTERN(const git_refspec *) git_remote_fetchspec(struct git_remote *remote); * @param remote the remote to connect to * @return GIT_SUCCESS or an error code */ -GIT_EXTERN(int) git_remote_connect(struct git_remote *remote, git_net_direction dir); +GIT_EXTERN(int) git_remote_connect(struct git_remote *remote, int direction); /** * Get a list of refs at the remote diff --git a/include/git2/transport.h b/include/git2/transport.h index 01883f2ca..982b081f8 100644 --- a/include/git2/transport.h +++ b/include/git2/transport.h @@ -45,7 +45,7 @@ GIT_BEGIN_DECL */ GIT_EXTERN(int) git_transport_new(git_transport **transport, const char *url); -GIT_EXTERN(int) git_transport_connect(git_transport *transport, git_net_direction direction); +GIT_EXTERN(int) git_transport_connect(git_transport *transport, int direction); GIT_EXTERN(int) git_transport_ls(git_transport *transport, git_headarray *array); GIT_EXTERN(int) git_transport_close(git_transport *transport); diff --git a/src/remote.c b/src/remote.c index 59ea6a797..2812f5de6 100644 --- a/src/remote.c +++ b/src/remote.c @@ -172,7 +172,7 @@ const git_refspec *git_remote_pushspec(struct git_remote *remote) return &remote->push; } -int git_remote_connect(git_remote *remote, git_net_direction dir) +int git_remote_connect(git_remote *remote, int direction) { int error; git_transport *t; @@ -181,7 +181,7 @@ int git_remote_connect(git_remote *remote, git_net_direction dir) if (error < GIT_SUCCESS) return git__rethrow(error, "Failed to create transport"); - error = git_transport_connect(t, dir); + error = git_transport_connect(t, direction); if (error < GIT_SUCCESS) { error = git__rethrow(error, "Failed to connect the transport"); goto cleanup; diff --git a/src/transport.c b/src/transport.c index d71560bb3..204ef176f 100644 --- a/src/transport.c +++ b/src/transport.c @@ -70,9 +70,9 @@ int git_transport_new(git_transport **out, const char *url) return GIT_SUCCESS; } -int git_transport_connect(git_transport *transport, git_net_direction dir) +int git_transport_connect(git_transport *transport, int direction) { - return transport->connect(transport, dir); + return transport->connect(transport, direction); } int git_transport_ls(git_transport *transport, git_headarray *array) diff --git a/src/transport.h b/src/transport.h index 6d5f037b8..b17d9a929 100644 --- a/src/transport.h +++ b/src/transport.h @@ -32,22 +32,14 @@ struct git_transport { */ char *url; /** - * Where each transport stores its private/instance data - */ - void *private; - /** - * The repo we want to act on - */ - git_repository *repo; - /** * Whether we want to push or fetch */ - git_net_direction direction; + int direction : 1; /* 0 fetch, 1 push */ int connected : 1; /** * Connect and store the remote heads */ - int (*connect)(struct git_transport *transport, git_net_direction intent); + int (*connect)(struct git_transport *transport, int dir); /** * Give a list of references, useful for ls-remote */ diff --git a/src/transport_git.c b/src/transport_git.c index c7c8df00f..d79ab5e34 100644 --- a/src/transport_git.c +++ b/src/transport_git.c @@ -230,14 +230,15 @@ static int store_refs(transport_git *t) * Since this is a network connection, we need to parse and store the * pkt-lines at this stage and keep them there. */ -static int git_connect(git_transport *transport, git_net_direction direction) +static int git_connect(git_transport *transport, int direction) { transport_git *t = (transport_git *) transport; int error = GIT_SUCCESS; - if (direction == INTENT_PUSH) + if (direction == GIT_DIR_PUSH) return git__throw(GIT_EINVALIDARGS, "Pushing is not supported with the git protocol"); + t->parent.direction = direction; error = git_vector_init(&t->refs, 16, NULL); if (error < GIT_SUCCESS) goto cleanup; diff --git a/src/transport_local.c b/src/transport_local.c index 5dc5c26ca..bdb75ad44 100644 --- a/src/transport_local.c +++ b/src/transport_local.c @@ -26,7 +26,7 @@ static int cmp_refs(const void *a, const void *b) * Try to open the url as a git directory. The direction doesn't * matter in this case because we're calulating the heads ourselves. */ -static int local_connect(git_transport *transport, git_net_direction GIT_UNUSED(dir)) +static int local_connect(git_transport *transport, int GIT_UNUSED(direction)) { git_repository *repo; int error; |