tdetect copies and renames based on the threshold of changes - stagit - static … | |
git clone git://src.adamsgaard.dk/stagit | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 8c45dfc58edc069a3787224f522c7f62da501a80 | |
parent 175094899d7c453786857d0e5a7d2e634611aea4 | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Sun, 11 Nov 2018 18:09:27 +0100 | |
detect copies and renames based on the threshold of changes | |
Diffstat: | |
M stagit.c | 9 +++++++++ | |
1 file changed, 9 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/stagit.c b/stagit.c | |
t@@ -92,6 +92,7 @@ commitinfo_getstats(struct commitinfo *ci) | |
{ | |
struct deltainfo *di; | |
git_diff_options opts; | |
+ git_diff_find_options fopts; | |
const git_diff_delta *delta; | |
const git_diff_hunk *hunk; | |
const git_diff_line *line; | |
t@@ -113,6 +114,12 @@ commitinfo_getstats(struct commitinfo *ci) | |
if (git_diff_tree_to_tree(&(ci->diff), repo, ci->parent_tree, ci->comm… | |
goto err; | |
+ if (git_diff_find_init_options(&fopts, GIT_DIFF_FIND_OPTIONS_VERSION)) | |
+ goto err; | |
+ fopts.flags |= GIT_DIFF_FIND_RENAMES | GIT_DIFF_FIND_COPIES; | |
+ if (git_diff_find_similar(ci->diff, &fopts)) | |
+ goto err; | |
+ | |
ndeltas = git_diff_num_deltas(ci->diff); | |
if (ndeltas && !(ci->deltas = calloc(ndeltas, sizeof(struct deltainfo … | |
err(1, "calloc"); | |
t@@ -120,6 +127,7 @@ commitinfo_getstats(struct commitinfo *ci) | |
for (i = 0; i < ndeltas; i++) { | |
if (git_patch_from_diff(&patch, ci->diff, i)) | |
goto err; | |
+ | |
if (!(di = calloc(1, sizeof(struct deltainfo)))) | |
err(1, "calloc"); | |
di->patch = patch; | |
t@@ -460,6 +468,7 @@ printshowfile(FILE *fp, struct commitinfo *ci) | |
fputs("<b>Diffstat:</b>\n<table>", fp); | |
for (i = 0; i < ci->ndeltas; i++) { | |
delta = git_patch_get_delta(ci->deltas[i]->patch); | |
+ | |
fprintf(fp, "<tr><td><a href=\"#h%zu\">", i); | |
xmlencode(fp, delta->old_file.path, strlen(delta->old_file.pat… | |
if (strcmp(delta->old_file.path, delta->new_file.path)) { |