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:
19
src/diff.c
19
src/diff.c
@@ -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, ©_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}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user