Linus Torvalds [off-list ref] writes:
And on exactly that note:
quoted
* diff --dirstat (Linus)
I actually actively use this (not just for -rc releases, but I find it
nice to do occasionally in other cases too), so it would be really nice if
at least the initial version got merged soon. Even if it gets the binary
case wrong,...
I am planning to do this (dropping the "damange" one I
previously showed and queued in 'pu') and merge to 'master' for
now.
-- >8 --
[PATCH] diff --dirstat: saner handling of binary and unmerged files
We do not account binary nor unmerged files when --shortstat is
asked for (or the summary stat at the end of --stat).
The new option --dirstat should work the same way as it is about
summarizing the changes of multiple files by adding them up.
Signed-off-by: Junio C Hamano <redacted>
---
diff.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/diff.c b/diff.c
index dd374d4..bcc323f 100644
--- a/diff.c
+++ b/diff.c
@@ -1016,7 +1016,10 @@ static long gather_dirstat(struct diffstat_dir *dir, unsigned long changed, cons
this = gather_dirstat(dir, changed, f->name, newbaselen);
sources++;
} else {
- this = f->added + f->deleted;
+ if (f->is_unmerged || f->is_binary)
+ this = 0;
+ else
+ this = f->added + f->deleted;
dir->files++;
dir->nr--;
sources += 2;@@ -1053,6 +1056,8 @@ static void show_dirstat(struct diffstat_t *data, struct diff_options *options)
/* Calculate total changes */
changed = 0;
for (i = 0; i < data->nr; i++) {
+ if (data->files[i]->is_binary || data->files[i]->is_unmerged)
+ continue;
changed += data->files[i]->added;
changed += data->files[i]->deleted;
}