Update rename src map for any split src When using a rename source that is actually a to-be-split record, we have to update the best-fit mapping data in both the case where the target is also a split record and the case where the target is a simple added record. Before this commit, we were only doing the update when the target was itself a split record (and even in that case, the test was slightly wrong).
diff --git a/src/diff_tform.c b/src/diff_tform.c
index 92c4036..ba35d3c 100644
--- a/src/diff_tform.c
+++ b/src/diff_tform.c
@@ -947,6 +947,11 @@ find_best_matches:
src->new_file.flags |= GIT_DIFF_FLAG_VALID_OID;
num_updates++;
+
+ if (src2tgt[t].similarity > 0 && src2tgt[t].idx > t) {
+ /* what used to be at src t is now at src s */
+ tgt2src[src2tgt[t].idx].idx = (uint32_t)s;
+ }
}
}
@@ -996,7 +1001,7 @@ find_best_matches:
num_rewrites--;
}
/* otherwise, if we just overwrote a source, update mapping */
- else if (s > t && src2tgt[t].similarity > 0) {
+ else if (src2tgt[t].similarity > 0 && src2tgt[t].idx > t) {
/* what used to be at src t is now at src s */
tgt2src[src2tgt[t].idx].idx = (uint32_t)s;
}