Implemented parameters for Diff.find_similar()

Diff.find_similar now supports the parameters that are exposed by
libgit2's git_diff_find_similar.

Parameters supported are rename_threshold, copy_threshold,
rename_from_rewrite_threshold, break_rewrite_threshold and rename_limit
This commit is contained in:
Arno van Lumig
2014-07-25 08:29:16 +02:00
parent 2a429aae98
commit eb001f0b98

View File

@@ -438,19 +438,30 @@ Diff_merge(Diff *self, PyObject *args)
PyDoc_STRVAR(Diff_find_similar__doc__, PyDoc_STRVAR(Diff_find_similar__doc__,
"find_similar([flags])\n" "find_similar([flags, rename_threshold, copy_threshold, rename_from_rewrite_threshold, break_rewrite_threshold, rename_limit])\n"
"\n" "\n"
"Find renamed files in diff and updates them in-place in the diff itself."); "Find renamed files in diff and updates them in-place in the diff itself.");
PyObject * PyObject *
Diff_find_similar(Diff *self, PyObject *args) Diff_find_similar(Diff *self, PyObject *args, PyObject *kwds)
{ {
int err; int err;
git_diff_find_options opts = GIT_DIFF_FIND_OPTIONS_INIT; git_diff_find_options opts = GIT_DIFF_FIND_OPTIONS_INIT;
if (!PyArg_ParseTuple(args, "|i", &opts.flags)) uint16_t rename_threshold, copy_threshold, rename_from_rewrite_threshold, break_rewrite_threshold;
size_t rename_limit;
char *keywords[] = {"flags", "rename_threshold", "copy_threshold", "rename_from_rewrite_threshold", "break_rewrite_threshold", "rename_limit", NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|iHHHHI", keywords,
&opts.flags, &rename_threshold, &copy_threshold, &rename_from_rewrite_threshold, &break_rewrite_threshold, &rename_limit))
return NULL; return NULL;
opts.rename_threshold = rename_threshold;
opts.copy_threshold = copy_threshold;
opts.rename_from_rewrite_threshold = rename_from_rewrite_threshold;
opts.break_rewrite_threshold = break_rewrite_threshold;
opts.rename_limit = rename_limit;
err = git_diff_find_similar(self->list, &opts); err = git_diff_find_similar(self->list, &opts);
if (err < 0) if (err < 0)
return Error_set(err); return Error_set(err);
@@ -508,7 +519,7 @@ PyMappingMethods Diff_as_mapping = {
static PyMethodDef Diff_methods[] = { static PyMethodDef Diff_methods[] = {
METHOD(Diff, merge, METH_VARARGS), METHOD(Diff, merge, METH_VARARGS),
METHOD(Diff, find_similar, METH_VARARGS), METHOD(Diff, find_similar, METH_VARARGS | METH_KEYWORDS),
METHOD(Diff, from_c, METH_STATIC | METH_VARARGS), METHOD(Diff, from_c, METH_STATIC | METH_VARARGS),
{NULL} {NULL}
}; };