mirror of
https://git.proxmox.com/git/libgit2
synced 2025-12-18 19:06:12 +00:00
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>
This commit is contained in:
parent
5da5321d17
commit
0ac2726fdf
@ -13,10 +13,8 @@
|
|||||||
* gets called.
|
* gets called.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum git_net_direction {
|
#define GIT_DIR_FETCH 0
|
||||||
INTENT_PUSH,
|
#define GIT_DIR_PUSH 1
|
||||||
INTENT_PULL
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is what we give out on ->ls()
|
* This is what we give out on ->ls()
|
||||||
|
|||||||
@ -64,7 +64,7 @@ GIT_EXTERN(const git_refspec *) git_remote_fetchspec(struct git_remote *remote);
|
|||||||
* @param remote the remote to connect to
|
* @param remote the remote to connect to
|
||||||
* @return GIT_SUCCESS or an error code
|
* @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
|
* Get a list of refs at the remote
|
||||||
|
|||||||
@ -45,7 +45,7 @@ GIT_BEGIN_DECL
|
|||||||
*/
|
*/
|
||||||
GIT_EXTERN(int) git_transport_new(git_transport **transport, const char *url);
|
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_ls(git_transport *transport, git_headarray *array);
|
||||||
GIT_EXTERN(int) git_transport_close(git_transport *transport);
|
GIT_EXTERN(int) git_transport_close(git_transport *transport);
|
||||||
|
|||||||
@ -172,7 +172,7 @@ const git_refspec *git_remote_pushspec(struct git_remote *remote)
|
|||||||
return &remote->push;
|
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;
|
int error;
|
||||||
git_transport *t;
|
git_transport *t;
|
||||||
@ -181,7 +181,7 @@ int git_remote_connect(git_remote *remote, git_net_direction dir)
|
|||||||
if (error < GIT_SUCCESS)
|
if (error < GIT_SUCCESS)
|
||||||
return git__rethrow(error, "Failed to create transport");
|
return git__rethrow(error, "Failed to create transport");
|
||||||
|
|
||||||
error = git_transport_connect(t, dir);
|
error = git_transport_connect(t, direction);
|
||||||
if (error < GIT_SUCCESS) {
|
if (error < GIT_SUCCESS) {
|
||||||
error = git__rethrow(error, "Failed to connect the transport");
|
error = git__rethrow(error, "Failed to connect the transport");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|||||||
@ -70,9 +70,9 @@ int git_transport_new(git_transport **out, const char *url)
|
|||||||
return GIT_SUCCESS;
|
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)
|
int git_transport_ls(git_transport *transport, git_headarray *array)
|
||||||
|
|||||||
@ -31,23 +31,15 @@ struct git_transport {
|
|||||||
* Where the repo lives
|
* Where the repo lives
|
||||||
*/
|
*/
|
||||||
char *url;
|
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
|
* Whether we want to push or fetch
|
||||||
*/
|
*/
|
||||||
git_net_direction direction;
|
int direction : 1; /* 0 fetch, 1 push */
|
||||||
int connected : 1;
|
int connected : 1;
|
||||||
/**
|
/**
|
||||||
* Connect and store the remote heads
|
* 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
|
* Give a list of references, useful for ls-remote
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -230,14 +230,15 @@ static int store_refs(transport_git *t)
|
|||||||
* Since this is a network connection, we need to parse and store the
|
* Since this is a network connection, we need to parse and store the
|
||||||
* pkt-lines at this stage and keep them there.
|
* 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;
|
transport_git *t = (transport_git *) transport;
|
||||||
int error = GIT_SUCCESS;
|
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");
|
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);
|
error = git_vector_init(&t->refs, 16, NULL);
|
||||||
if (error < GIT_SUCCESS)
|
if (error < GIT_SUCCESS)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|||||||
@ -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
|
* Try to open the url as a git directory. The direction doesn't
|
||||||
* matter in this case because we're calulating the heads ourselves.
|
* 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;
|
git_repository *repo;
|
||||||
int error;
|
int error;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user