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__,
|
||||
"find_similar([flags])\n"
|
||||
"find_similar([flags, rename_threshold, copy_threshold, rename_from_rewrite_threshold, break_rewrite_threshold, rename_limit])\n"
|
||||
"\n"
|
||||
"Find renamed files in diff and updates them in-place in the diff itself.");
|
||||
|
||||
PyObject *
|
||||
Diff_find_similar(Diff *self, PyObject *args)
|
||||
Diff_find_similar(Diff *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
int err;
|
||||
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;
|
||||
|
||||
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);
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
@@ -508,7 +519,7 @@ PyMappingMethods Diff_as_mapping = {
|
||||
|
||||
static PyMethodDef Diff_methods[] = {
|
||||
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),
|
||||
{NULL}
|
||||
};
|
||||
|
Reference in New Issue
Block a user