Merge pull request #247 from cholin/features/reference_get_object
Added: Reference.get_object() method
This commit is contained in:
@@ -11,7 +11,7 @@ Example::
|
|||||||
|
|
||||||
>>> all_refs = repo.listall_references()
|
>>> all_refs = repo.listall_references()
|
||||||
>>> master_ref = repo.lookup_reference("refs/heads/master")
|
>>> master_ref = repo.lookup_reference("refs/heads/master")
|
||||||
>>> commit = repo[master_ref.target]
|
>>> commit = master_ref.get_object() # or repo[master_ref.target]
|
||||||
|
|
||||||
|
|
||||||
The Reference type
|
The Reference type
|
||||||
@@ -25,6 +25,7 @@ The Reference type
|
|||||||
.. automethod:: pygit2.Reference.rename
|
.. automethod:: pygit2.Reference.rename
|
||||||
.. automethod:: pygit2.Reference.resolve
|
.. automethod:: pygit2.Reference.resolve
|
||||||
.. automethod:: pygit2.Reference.log
|
.. automethod:: pygit2.Reference.log
|
||||||
|
.. automethod:: pygit2.Reference.get_object
|
||||||
|
|
||||||
|
|
||||||
The HEAD
|
The HEAD
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <structmember.h>
|
#include <structmember.h>
|
||||||
|
#include "object.h"
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
@@ -312,6 +313,27 @@ Reference_log(Reference *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PyDoc_STRVAR(Reference_get_object__doc__,
|
||||||
|
"get_object() -> object\n"
|
||||||
|
"\n"
|
||||||
|
"Retrieves the object the current reference is pointing to.");
|
||||||
|
|
||||||
|
PyObject *
|
||||||
|
Reference_get_object(Reference *self)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
git_object* obj;
|
||||||
|
|
||||||
|
CHECK_REFERENCE(self);
|
||||||
|
|
||||||
|
err = git_reference_peel(&obj, self->reference, GIT_OBJ_ANY);
|
||||||
|
if (err < 0)
|
||||||
|
return Error_set(err);
|
||||||
|
|
||||||
|
return wrap_object(obj, self->repo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
PyDoc_STRVAR(RefLogEntry_committer__doc__, "Committer.");
|
PyDoc_STRVAR(RefLogEntry_committer__doc__, "Committer.");
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
@@ -404,6 +426,7 @@ PyMethodDef Reference_methods[] = {
|
|||||||
METHOD(Reference, rename, METH_O),
|
METHOD(Reference, rename, METH_O),
|
||||||
METHOD(Reference, resolve, METH_NOARGS),
|
METHOD(Reference, resolve, METH_NOARGS),
|
||||||
METHOD(Reference, log, METH_NOARGS),
|
METHOD(Reference, log, METH_NOARGS),
|
||||||
|
METHOD(Reference, get_object, METH_NOARGS),
|
||||||
{NULL}
|
{NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -209,5 +209,11 @@ class ReferencesTest(utils.RepoTestCase):
|
|||||||
# self.repo.packall_references()
|
# self.repo.packall_references()
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_object(self):
|
||||||
|
repo = self.repo
|
||||||
|
ref = repo.lookup_reference('refs/heads/master')
|
||||||
|
self.assertEqual(repo[ref.target].oid, ref.get_object().oid)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Reference in New Issue
Block a user