Skip to content

Commit

Permalink
diff --stat: do not count "unmerged" entries
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
gitster committed Nov 27, 2012
1 parent a20d3c0 commit 82dfc2c
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 3 deletions.
6 changes: 4 additions & 2 deletions diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion t/t4049-diff-stat-count.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 &&
Expand Down

0 comments on commit 82dfc2c

Please sign in to comment.