I have tried to make --follow to support finding copies among unmodified files. And the first patch is to fix a bug introduced by '--follow' and 'git log' combination. We use the code: else if (--p->one->rename_used > 0) p->status = DIFF_STATUS_COPIED; to detect copies and renames. So, if diffcore_std run more than one time, p->one->rename_used will be reduced to a 'R' from 'C'. And this patch will fix this by allowing diffcore_std can only run once before a diff_flush, which seems rationale for our code. Bo Yang (2): Make diffcore_std only can run once before a diff_flush. Make git log --follow find copies among unmodified files. Documentation/git-log.txt | 2 +- diff.c | 21 ++++++++----- diffcore-break.c | 6 +-- diffcore-pickaxe.c | 3 +- diffcore-rename.c | 3 +- diffcore.h | 6 ++++ t/t4205-log-follow-harder-copies.sh | 56 +++++++++++++++++++++++++++++++++++ tree-diff.c | 2 +- 8 files changed, 81 insertions(+), 18 deletions(-) create mode 100755 t/t4205-log-follow-harder-copies.sh -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html