Add wrap remote.
This commit is contained in:
18
src/remote.c
18
src/remote.c
@@ -1081,3 +1081,21 @@ PyTypeObject RemoteType = {
|
|||||||
0, /* tp_alloc */
|
0, /* tp_alloc */
|
||||||
0, /* tp_new */
|
0, /* tp_new */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
PyObject *
|
||||||
|
wrap_remote(git_remote *c_remote, Repository *repo)
|
||||||
|
{
|
||||||
|
Remote *py_remote = NULL;
|
||||||
|
py_remote = PyObject_New(Remote, &RemoteType);
|
||||||
|
if (py_remote) {
|
||||||
|
Py_INCREF(repo);
|
||||||
|
py_remote->repo = repo;
|
||||||
|
py_remote->remote = c_remote;
|
||||||
|
py_remote->progress = NULL;
|
||||||
|
py_remote->transfer_progress = NULL;
|
||||||
|
py_remote->update_tips = NULL;
|
||||||
|
Remote_set_callbacks(py_remote);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (PyObject *)py_remote;
|
||||||
|
}
|
||||||
|
@@ -37,5 +37,6 @@ PyObject* Remote_init(Remote *self, PyObject *args, PyObject *kwds);
|
|||||||
PyObject* Remote_fetch(Remote *self, PyObject *args);
|
PyObject* Remote_fetch(Remote *self, PyObject *args);
|
||||||
|
|
||||||
void Remote_set_callbacks(Remote *self);
|
void Remote_set_callbacks(Remote *self);
|
||||||
|
PyObject *wrap_remote(git_remote *c_remote, Repository *repo);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1279,7 +1279,6 @@ PyDoc_STRVAR(Repository_create_remote__doc__,
|
|||||||
PyObject *
|
PyObject *
|
||||||
Repository_create_remote(Repository *self, PyObject *args)
|
Repository_create_remote(Repository *self, PyObject *args)
|
||||||
{
|
{
|
||||||
Remote *py_remote;
|
|
||||||
git_remote *remote;
|
git_remote *remote;
|
||||||
char *name = NULL, *url = NULL;
|
char *name = NULL, *url = NULL;
|
||||||
int err;
|
int err;
|
||||||
@@ -1291,13 +1290,7 @@ Repository_create_remote(Repository *self, PyObject *args)
|
|||||||
if (err < 0)
|
if (err < 0)
|
||||||
return Error_set(err);
|
return Error_set(err);
|
||||||
|
|
||||||
py_remote = PyObject_New(Remote, &RemoteType);
|
return (PyObject*) wrap_remote(remote, self);
|
||||||
Py_INCREF(self);
|
|
||||||
py_remote->repo = self;
|
|
||||||
py_remote->remote = remote;
|
|
||||||
Remote_set_callbacks(py_remote);
|
|
||||||
|
|
||||||
return (PyObject*) py_remote;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1307,18 +1300,19 @@ PyObject *
|
|||||||
Repository_remotes__get__(Repository *self)
|
Repository_remotes__get__(Repository *self)
|
||||||
{
|
{
|
||||||
git_strarray remotes;
|
git_strarray remotes;
|
||||||
|
git_remote *remote = NULL;
|
||||||
PyObject* py_list = NULL, *py_args = NULL;
|
PyObject* py_list = NULL, *py_args = NULL;
|
||||||
Remote *py_remote;
|
|
||||||
size_t i;
|
size_t i;
|
||||||
|
int err;
|
||||||
|
|
||||||
git_remote_list(&remotes, self->repo);
|
git_remote_list(&remotes, self->repo);
|
||||||
|
|
||||||
py_list = PyList_New(remotes.count);
|
py_list = PyList_New(remotes.count);
|
||||||
for (i=0; i < remotes.count; ++i) {
|
for (i=0; i < remotes.count; ++i) {
|
||||||
py_remote = PyObject_New(Remote, &RemoteType);
|
err = git_remote_load(&remote, self->repo, remotes.strings[i]);
|
||||||
py_args = Py_BuildValue("Os", self, remotes.strings[i]);
|
if (err < 0)
|
||||||
Remote_init(py_remote, py_args, NULL);
|
return Error_set(err);
|
||||||
PyList_SetItem(py_list, i, (PyObject*) py_remote);
|
PyList_SetItem(py_list, i, wrap_remote(remote, self));
|
||||||
}
|
}
|
||||||
|
|
||||||
git_strarray_free(&remotes);
|
git_strarray_free(&remotes);
|
||||||
|
Reference in New Issue
Block a user