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:
J. David Ibáñez 2013-03-09 12:36:58 +01:00
parent 86b063fbd0
commit 27aba1f3c8
4 changed files with 23 additions and 64 deletions

@ -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__':