Add binary for patch.

This commit is contained in:
XTao 2013-10-30 15:06:40 +08:00
parent 9c13be8dec
commit d0b366e866
3 changed files with 20 additions and 1 deletions

@ -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 */

@ -113,6 +113,7 @@ typedef struct {
char* new_oid;
char status;
unsigned similarity;
unsigned flags;
} Patch;
typedef struct {

@ -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))