From d0b366e86614ec4b7e29ca3e98c89632c1c5f226 Mon Sep 17 00:00:00 2001 From: XTao Date: Wed, 30 Oct 2013 15:06:40 +0800 Subject: [PATCH] Add binary for patch. --- src/diff.c | 19 ++++++++++++++++++- src/types.h | 1 + test/test_diff.py | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/diff.c b/src/diff.c index f46d4bd..e7adb50 100644 --- a/src/diff.c +++ b/src/diff.c @@ -81,6 +81,7 @@ diff_get_patch_byindex(git_diff_list* list, size_t idx) py_patch->new_file_path = delta->new_file.path; py_patch->status = git_diff_status_char(delta->status); py_patch->similarity = delta->similarity; + py_patch->flags = delta->flags; py_patch->old_oid = git_oid_allocfmt(&delta->old_file.oid); py_patch->new_oid = git_oid_allocfmt(&delta->new_file.oid); @@ -155,6 +156,22 @@ PyMemberDef Patch_members[] = { {NULL} }; +PyDoc_STRVAR(Patch_binary__doc__, "Binary."); + +PyObject * +Patch_binary__get__(Patch *self) +{ + if (!(self->flags & GIT_DIFF_FLAG_NOT_BINARY) && + (self->flags & GIT_DIFF_FLAG_BINARY)) + Py_RETURN_TRUE; + Py_RETURN_FALSE; +} + +PyGetSetDef Patch_getseters[] = { + GETTER(Patch, binary), + {NULL} +}; + PyDoc_STRVAR(Patch__doc__, "Diff patch object."); PyTypeObject PatchType = { @@ -187,7 +204,7 @@ PyTypeObject PatchType = { 0, /* tp_iternext */ 0, /* tp_methods */ Patch_members, /* tp_members */ - 0, /* tp_getset */ + Patch_getseters, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ diff --git a/src/types.h b/src/types.h index 926d74a..2b6c225 100644 --- a/src/types.h +++ b/src/types.h @@ -113,6 +113,7 @@ typedef struct { char* new_oid; char status; unsigned similarity; + unsigned flags; } Patch; typedef struct { diff --git a/test/test_diff.py b/test/test_diff.py index 697b8be..0dcd22f 100644 --- a/test/test_diff.py +++ b/test/test_diff.py @@ -175,6 +175,7 @@ class DiffTest(utils.BareRepoTestCase): self.assertEqual(patch.old_file_path, 'a') self.assertEqual(patch.new_file_path, 'a') + self.assertEqual(patch.binary, False) _test(commit_a.tree.diff_to_tree(commit_b.tree)) _test(self.repo.diff(COMMIT_SHA1_1, COMMIT_SHA1_2))