diff --stat: do not count "unmerged" entries
authorJunio C Hamano <gitster@pobox.com>
Tue, 27 Nov 2012 20:05:10 +0000 (12:05 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 27 Nov 2012 21:21:15 +0000 (13:21 -0800)
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>
diff.c
t/t4049-diff-stat-count.sh

diff --git a/diff.c b/diff.c
index 4105260122878a81994077e1552dcc305f501037..26ede82a7b3a2c3d6153f1f721fc2cfa1aac4371 100644 (file)
--- 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;
                }
index 70ee0736813fd4db389f996080bfdb28515ffc8b..37f50cdef9d87209a52502eb80e9f69081368930 100755 (executable)
@@ -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 &&