diff --git a/src/pygit2.c b/src/pygit2.c index 1c3f42b..cd56a6e 100644 --- a/src/pygit2.c +++ b/src/pygit2.c @@ -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 */ diff --git a/src/reference.c b/src/reference.c index f13ed31..129ed44 100644 --- a/src/reference.c +++ b/src/reference.c @@ -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} diff --git a/src/repository.c b/src/repository.c index 1016948..497e28d 100644 --- a/src/repository.c +++ b/src/repository.c @@ -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), diff --git a/test/test_refs.py b/test/test_refs.py index 0b2f61c..fb00182 100644 --- a/test/test_refs.py +++ b/test/test_refs.py @@ -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__':