Update to changes in libgit2 concerning refs
Two methods have been drop: - Repository.packall_references - Reference.reload The unit tests have been commented until we wrap the new reference database from libgit2.
This commit is contained in:
parent
86b063fbd0
commit
27aba1f3c8
@ -290,9 +290,9 @@ moduleinit(PyObject* m)
|
||||
PyModule_AddIntConstant(m, "GIT_SORT_TOPOLOGICAL", GIT_SORT_TOPOLOGICAL);
|
||||
PyModule_AddIntConstant(m, "GIT_SORT_TIME", GIT_SORT_TIME);
|
||||
PyModule_AddIntConstant(m, "GIT_SORT_REVERSE", GIT_SORT_REVERSE);
|
||||
PyModule_AddIntConstant(m, "GIT_REF_INVALID", GIT_REF_INVALID);
|
||||
PyModule_AddIntConstant(m, "GIT_REF_OID", GIT_REF_OID);
|
||||
PyModule_AddIntConstant(m, "GIT_REF_SYMBOLIC", GIT_REF_SYMBOLIC);
|
||||
PyModule_AddIntConstant(m, "GIT_REF_PACKED", GIT_REF_PACKED);
|
||||
PyModule_AddIntConstant(m, "GIT_REF_LISTALL", GIT_REF_LISTALL);
|
||||
|
||||
/* Git status flags */
|
||||
|
@ -161,6 +161,7 @@ Reference_rename(Reference *self, PyObject *py_name)
|
||||
{
|
||||
char *c_name;
|
||||
int err;
|
||||
git_reference *new_reference;
|
||||
|
||||
CHECK_REFERENCE(self);
|
||||
|
||||
@ -170,33 +171,12 @@ Reference_rename(Reference *self, PyObject *py_name)
|
||||
return NULL;
|
||||
|
||||
/* Rename */
|
||||
err = git_reference_rename(self->reference, c_name, 0);
|
||||
err = git_reference_rename(&new_reference, self->reference, c_name, 0);
|
||||
free(c_name);
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
|
||||
PyDoc_STRVAR(Reference_reload__doc__,
|
||||
"reload()\n"
|
||||
"\n"
|
||||
"Reload the reference from the file-system.");
|
||||
|
||||
PyObject *
|
||||
Reference_reload(Reference *self)
|
||||
{
|
||||
int err;
|
||||
|
||||
CHECK_REFERENCE(self);
|
||||
|
||||
err = git_reference_reload(self->reference);
|
||||
if (err < 0) {
|
||||
self->reference = NULL;
|
||||
return Error_set(err);
|
||||
}
|
||||
|
||||
self->reference = new_reference;
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
@ -214,13 +194,8 @@ Reference_resolve(Reference *self, PyObject *args)
|
||||
|
||||
CHECK_REFERENCE(self);
|
||||
|
||||
/* Direct: reload */
|
||||
/* Direct: return myself */
|
||||
if (git_reference_type(self->reference) == GIT_REF_OID) {
|
||||
err = git_reference_reload(self->reference);
|
||||
if (err < 0) {
|
||||
self->reference = NULL;
|
||||
return Error_set(err);
|
||||
}
|
||||
Py_INCREF(self);
|
||||
return (PyObject *)self;
|
||||
}
|
||||
@ -263,6 +238,7 @@ Reference_target__set__(Reference *self, PyObject *py_name)
|
||||
{
|
||||
char *c_name;
|
||||
int err;
|
||||
git_reference *new_ref;
|
||||
|
||||
CHECK_REFERENCE_INT(self);
|
||||
|
||||
@ -272,13 +248,14 @@ Reference_target__set__(Reference *self, PyObject *py_name)
|
||||
return -1;
|
||||
|
||||
/* Set the new target */
|
||||
err = git_reference_symbolic_set_target(self->reference, c_name);
|
||||
err = git_reference_symbolic_set_target(&new_ref, self->reference, c_name);
|
||||
free(c_name);
|
||||
if (err < 0) {
|
||||
Error_set(err);
|
||||
return -1;
|
||||
}
|
||||
|
||||
self->reference = new_ref;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -320,6 +297,7 @@ Reference_oid__set__(Reference *self, PyObject *py_hex)
|
||||
{
|
||||
git_oid oid;
|
||||
int err;
|
||||
git_reference *new_ref;
|
||||
|
||||
CHECK_REFERENCE_INT(self);
|
||||
|
||||
@ -332,12 +310,13 @@ Reference_oid__set__(Reference *self, PyObject *py_hex)
|
||||
}
|
||||
|
||||
/* Set the oid */
|
||||
err = git_reference_set_target(self->reference, &oid);
|
||||
err = git_reference_set_target(&new_ref, self->reference, &oid);
|
||||
if (err < 0) {
|
||||
Error_set(err);
|
||||
return -1;
|
||||
}
|
||||
|
||||
self->reference = new_ref;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -366,7 +345,7 @@ Reference_hex__get__(Reference *self)
|
||||
|
||||
|
||||
PyDoc_STRVAR(Reference_type__doc__,
|
||||
"Type (GIT_REF_OID, GIT_REF_SYMBOLIC or GIT_REF_PACKED).");
|
||||
"Type (GIT_REF_OID or GIT_REF_SYMBOLIC).");
|
||||
|
||||
PyObject *
|
||||
Reference_type__get__(Reference *self)
|
||||
@ -481,7 +460,6 @@ PyTypeObject RefLogEntryType = {
|
||||
PyMethodDef Reference_methods[] = {
|
||||
METHOD(Reference, delete, METH_NOARGS),
|
||||
METHOD(Reference, rename, METH_O),
|
||||
METHOD(Reference, reload, METH_NOARGS),
|
||||
METHOD(Reference, resolve, METH_NOARGS),
|
||||
METHOD(Reference, log, METH_NOARGS),
|
||||
{NULL}
|
||||
|
@ -902,24 +902,6 @@ Repository_create_symbolic_reference(Repository *self, PyObject *args,
|
||||
}
|
||||
|
||||
|
||||
PyDoc_STRVAR(Repository_packall_references__doc__,
|
||||
"packall_references()\n"
|
||||
"\n"
|
||||
"Pack all the loose references in the repository.");
|
||||
|
||||
PyObject *
|
||||
Repository_packall_references(Repository *self, PyObject *args)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = git_reference_packall(self->repo);
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
|
||||
PyDoc_STRVAR(Repository_status__doc__,
|
||||
"status() -> {str: int}\n"
|
||||
"\n"
|
||||
@ -1145,7 +1127,6 @@ PyMethodDef Repository_methods[] = {
|
||||
METHOD(Repository, create_symbolic_reference, METH_VARARGS),
|
||||
METHOD(Repository, listall_references, METH_VARARGS),
|
||||
METHOD(Repository, lookup_reference, METH_O),
|
||||
METHOD(Repository, packall_references, METH_NOARGS),
|
||||
METHOD(Repository, revparse_single, METH_O),
|
||||
METHOD(Repository, status, METH_NOARGS),
|
||||
METHOD(Repository, status_file, METH_O),
|
||||
|
@ -142,16 +142,16 @@ class ReferencesTest(utils.RepoTestCase):
|
||||
self.assertEqual(reference.name, 'refs/tags/version2')
|
||||
|
||||
|
||||
def test_reload(self):
|
||||
name = 'refs/tags/version1'
|
||||
# def test_reload(self):
|
||||
# name = 'refs/tags/version1'
|
||||
|
||||
repo = self.repo
|
||||
ref = repo.create_reference(name, "refs/heads/master", symbolic=True)
|
||||
ref2 = repo.lookup_reference(name)
|
||||
ref.delete()
|
||||
self.assertEqual(ref2.name, name)
|
||||
self.assertRaises(KeyError, ref2.reload)
|
||||
self.assertRaises(GitError, getattr, ref2, 'name')
|
||||
# repo = self.repo
|
||||
# ref = repo.create_reference(name, "refs/heads/master", symbolic=True)
|
||||
# ref2 = repo.lookup_reference(name)
|
||||
# ref.delete()
|
||||
# self.assertEqual(ref2.name, name)
|
||||
# self.assertRaises(KeyError, ref2.reload)
|
||||
# self.assertRaises(GitError, getattr, ref2, 'name')
|
||||
|
||||
|
||||
def test_reference_resolve(self):
|
||||
@ -209,8 +209,8 @@ class ReferencesTest(utils.RepoTestCase):
|
||||
self.assertEqual(reference.target, 'refs/heads/master')
|
||||
|
||||
|
||||
def test_packall_references(self):
|
||||
self.repo.packall_references()
|
||||
# def test_packall_references(self):
|
||||
# self.repo.packall_references()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
Loading…
x
Reference in New Issue
Block a user