Added line origins for Hunks in Pygit2.Patch

This commit is contained in:
Nico von Geyso
2013-05-06 13:22:48 +02:00
parent d900ee16fc
commit f972d99d5f
4 changed files with 5 additions and 11 deletions

View File

@@ -88,8 +88,8 @@ diff_get_patch_byindex(git_diff_list* list, size_t idx)
PyList_SetItem(py_hunk->lines, 0, PyList_SetItem(py_hunk->lines, 0,
to_unicode_n(header, header_len, NULL, NULL)); to_unicode_n(header, header_len, NULL, NULL));
for (j=1; j < lines_in_hunk + 1; ++j) { for (j=1; j < lines_in_hunk + 1; ++j) {
err = git_diff_patch_get_line_in_hunk(NULL, &line, err = git_diff_patch_get_line_in_hunk(&py_hunk->origin,
&line_len, NULL, NULL, patch, i, j - 1); &line, &line_len, NULL, NULL, patch, i, j - 1);
if (err < 0) if (err < 0)
goto cleanup; goto cleanup;
@@ -279,6 +279,7 @@ Hunk_dealloc(Hunk *self)
} }
PyMemberDef Hunk_members[] = { PyMemberDef Hunk_members[] = {
MEMBER(Hunk, origin, T_CHAR, "origin."),
MEMBER(Hunk, old_start, T_INT, "Old start."), MEMBER(Hunk, old_start, T_INT, "Old start."),
MEMBER(Hunk, old_lines, T_INT, "Old lines."), MEMBER(Hunk, old_lines, T_INT, "Old lines."),
MEMBER(Hunk, new_start, T_INT, "New start."), MEMBER(Hunk, new_start, T_INT, "New start."),

View File

@@ -338,15 +338,6 @@ moduleinit(PyObject* m)
ADD_CONSTANT_INT(m, GIT_DELTA_COPIED) ADD_CONSTANT_INT(m, GIT_DELTA_COPIED)
ADD_CONSTANT_INT(m, GIT_DELTA_IGNORED) ADD_CONSTANT_INT(m, GIT_DELTA_IGNORED)
ADD_CONSTANT_INT(m, GIT_DELTA_UNTRACKED) ADD_CONSTANT_INT(m, GIT_DELTA_UNTRACKED)
/* Flags for diffed lines origin */
ADD_CONSTANT_INT(m, GIT_DIFF_LINE_CONTEXT)
ADD_CONSTANT_INT(m, GIT_DIFF_LINE_ADDITION)
ADD_CONSTANT_INT(m, GIT_DIFF_LINE_DELETION)
ADD_CONSTANT_INT(m, GIT_DIFF_LINE_ADD_EOFNL)
ADD_CONSTANT_INT(m, GIT_DIFF_LINE_DEL_EOFNL)
ADD_CONSTANT_INT(m, GIT_DIFF_LINE_FILE_HDR)
ADD_CONSTANT_INT(m, GIT_DIFF_LINE_HUNK_HDR)
ADD_CONSTANT_INT(m, GIT_DIFF_LINE_BINARY)
/* Config */ /* Config */
INIT_TYPE(ConfigType, NULL, PyType_GenericNew) INIT_TYPE(ConfigType, NULL, PyType_GenericNew)

View File

@@ -118,6 +118,7 @@ typedef struct {
typedef struct { typedef struct {
PyObject_HEAD PyObject_HEAD
PyObject* lines; PyObject* lines;
char origin;
int old_start; int old_start;
int old_lines; int old_lines;
int new_start; int new_start;

View File

@@ -134,6 +134,7 @@ class DiffTest(utils.BareRepoTestCase):
patch = diff[0] patch = diff[0]
hunk = patch.hunks[0] hunk = patch.hunks[0]
self.assertEqual(hunk.origin, '+')
self.assertEqual(hunk.old_start, 1) self.assertEqual(hunk.old_start, 1)
self.assertEqual(hunk.old_lines, 1) self.assertEqual(hunk.old_lines, 1)
self.assertEqual(hunk.new_start, 1) self.assertEqual(hunk.new_start, 1)