aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-11-27 12:05:10 -0800
committerJunio C Hamano <gitster@pobox.com>2012-11-27 13:21:15 -0800
commit82dfc2c44ecda8a7afe417086c704b141a11cd58 (patch)
treeb3be82aaf65709e70e1967db68ebfe889f6d23e1
parenta20d3c0de1f107ddd719a4a9cec3addd56e8444f (diff)
downloadgit-82dfc2c44ecda8a7afe417086c704b141a11cd58.tar.gz
git-82dfc2c44ecda8a7afe417086c704b141a11cd58.tar.xz
diff --stat: do not count "unmerged" entries
Even though we show a separate *UNMERGED* entry in the patch and diffstat output (or in the --raw format, for that matter) in addition to and separately from the diff against the specified stage (defaulting to #2) for unmerged paths, they should not be counted in the total number of files affected---that would lead to counting the same path twice. The separation done by the previous step makes this fix simple and straightforward. Among the filepairs in diff_queue, paths that weren't modified, and the extra "unmerged" entries do not count as total number of files. Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--diff.c6
-rwxr-xr-xt/t4049-diff-stat-count.sh2
2 files changed, 5 insertions, 3 deletions
diff --git a/diff.c b/diff.c
index 410526012..26ede82a7 100644
--- a/diff.c
+++ b/diff.c
@@ -1669,12 +1669,14 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
struct diffstat_file *file = data->files[i];
uintmax_t added = file->added;
uintmax_t deleted = file->deleted;
- if (!file->is_interesting && (added + deleted == 0)) {
+
+ if (file->is_unmerged ||
+ (!file->is_interesting && (added + deleted == 0))) {
total_files--;
continue;
}
- if (!file->is_binary && !file->is_unmerged) {
+ if (!file->is_binary) {
adds += added;
dels += deleted;
}
diff --git a/t/t4049-diff-stat-count.sh b/t/t4049-diff-stat-count.sh
index 70ee07368..37f50cdef 100755
--- a/t/t4049-diff-stat-count.sh
+++ b/t/t4049-diff-stat-count.sh
@@ -44,7 +44,7 @@ test_expect_success 'binary changes do not count in lines' '
test_i18ncmp expect actual
'
-test_expect_failure 'exclude unmerged entries from total file count' '
+test_expect_success 'exclude unmerged entries from total file count' '
git reset --hard &&
echo a >a &&
echo b >b &&