summaryrefslogtreecommitdiff
path: root/include/git2/diff.h
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-02-15 14:12:43 -0800
committerRussell Belfer <rb@github.com>2013-02-20 15:09:41 -0800
commita235e9d355c2188eb35efeac8147b2e8b626caa3 (patch)
treef39c053acea5c65b81ab461c5d6e4cb2df9607ff /include/git2/diff.h
parentaa6432604e09de40ee20ee1f6631a2f717111863 (diff)
downloadlibgit2-a235e9d355c2188eb35efeac8147b2e8b626caa3.tar.gz
Pluggable similarity metric API
Diffstat (limited to 'include/git2/diff.h')
-rw-r--r--include/git2/diff.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/git2/diff.h b/include/git2/diff.h
index 3a88902ad..d90fedfbd 100644
--- a/include/git2/diff.h
+++ b/include/git2/diff.h
@@ -390,6 +390,16 @@ typedef enum {
} git_diff_find_t;
/**
+ * Pluggable similarity metric
+ */
+typedef struct {
+ int (*calc_signature)(void **out, const git_diff_file *file, void *payload);
+ void (*free_signature)(void *sig, void *payload);
+ int (*calc_similarity)(int *score, void *siga, void *sigb, void *payload);
+ void *payload;
+} git_diff_similarity_metric;
+
+/**
* Control behavior of rename and copy detection
*/
typedef struct {
@@ -411,6 +421,9 @@ typedef struct {
* the `diff.renameLimit` config) (default 200)
*/
unsigned int target_limit;
+
+ /** Pluggable similarity metric; pass NULL to use internal metric */
+ git_diff_similarity_metric *metric;
} git_diff_find_options;
#define GIT_DIFF_FIND_OPTIONS_VERSION 1