Here's a reroll of the previous series. Changes since v1: - Adopt Junio's phrasing of the differences between --dirstat and regular diff (--stat) - Detect and ignore pure renames in the diff queue. This is done by comparing the SHA1s of each file pair, and if they are equal, we know the files are identical, and should not show up in --dirstat. As an extra bonus in this version, when the SHA1s do match, we can bypass the usual --dirstat analysis, because we know it would find no changes. Instead, we can directly set damage = 0 in that case. I've looked at the contents of the diff queue and resulting output in a variety of cases: - files with no changes, rearranged lines, and other changes - files that are copied, moved, or not moved - unstaged changes, staged changes, committed changes - diff options: (none), --stat, --dirstat, and --dirstat-by-file - diff options: (none), -M, and -C -C (324 variations in total) and I'm fairly sure about the current patches and how they interact with the diff queue. A remaining question AFAICS is if there's a different (i.e. better) way to (cheaply) estimate the damage contributed by code movements within a file. The current "damage = 1" approach is somewhat crude, but IMHO still better that ignoring code movements altogether. Have fun! :) ...Johan Johan Herland (3): --dirstat: Describe non-obvious differences relative to --stat or regular diff --dirstat-by-file: Make it faster and more correct Teach --dirstat to not completely ignore rearranged lines within a file Documentation/diff-options.txt | 4 ++ diff.c | 40 ++++++++++++++++++-- t/t4013-diff-various.sh | 27 ++++++++++--- .../diff.diff_--dirstat-by-file_initial_rearrange | 3 + t/t4013/diff.diff_--dirstat_initial_rearrange | 3 + ...tch_--stdout_--cover-letter_-n_initial..master^ | 2 +- t/t4013/diff.log_--decorate=full_--all | 6 +++ t/t4013/diff.log_--decorate_--all | 6 +++ 8 files changed, 80 insertions(+), 11 deletions(-) create mode 100644 t/t4013/diff.diff_--dirstat-by-file_initial_rearrange create mode 100644 t/t4013/diff.diff_--dirstat_initial_rearrange -- 1.7.5.rc1.3.g4d7b -- 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