Implemented git_tree_entry_bypath within Tree.__getitem__
This commit is contained in:
parent
a1716a3a92
commit
398e717ec6
@ -26,6 +26,7 @@
|
||||
*/
|
||||
|
||||
#define PY_SSIZE_T_CLEAN
|
||||
#include <string.h>
|
||||
#include <Python.h>
|
||||
#include <pygit2/error.h>
|
||||
#include <pygit2/utils.h>
|
||||
@ -247,7 +248,15 @@ Tree_getitem(Tree *self, PyObject *value)
|
||||
name = py_path_to_c_str(value);
|
||||
if (name == NULL)
|
||||
return NULL;
|
||||
entry = git_tree_entry_byname(self->tree, name);
|
||||
|
||||
if (strchr(name, '/') != NULL) {
|
||||
/* Case 2a: path string */
|
||||
git_tree_entry_bypath(&entry, self->tree, name);
|
||||
} else {
|
||||
/* Case 2b: base name */
|
||||
entry = git_tree_entry_byname(self->tree, name);
|
||||
}
|
||||
|
||||
free(name);
|
||||
if (!entry) {
|
||||
PyErr_SetObject(PyExc_KeyError, value);
|
||||
|
@ -68,6 +68,9 @@ class TreeTest(utils.BareRepoTestCase):
|
||||
self.assertTreeEntryEqual(tree[-2], sha, 'b', 0o0100644)
|
||||
self.assertTreeEntryEqual(tree['b'], sha, 'b', 0o0100644)
|
||||
|
||||
sha = '297efb891a47de80be0cfe9c639e4b8c9b450989'
|
||||
self.assertTreeEntryEqual(tree['c/d'], sha, 'd', 0o0100644)
|
||||
|
||||
def test_read_subtree(self):
|
||||
tree = self.repo[TREE_SHA]
|
||||
subtree_entry = tree['c']
|
||||
|
Loading…
x
Reference in New Issue
Block a user