How to make diffstat count removed and newly added files to LOC count?

341 Views Asked by At
diff -ur dir1 dir2 | diffstat

this is similar to git diff --stat, but diffstat is ignoring "Only in dir1" and "Only in dir2" files, whereas git diff adds it to deletion and insertion counts respectively. Is there a way to make diffstat to do the same?

2

There are 2 best solutions below

0
Thomas Dickey On BEST ANSWER

Simpler:

diff -urN dir1/ dir2/ |diffstat

using GNU diff's -N option, e.g., when comparing directories:

If only one file exists, diff normally does not show its contents; it merely reports that one file exists but the other does not. You can make diff act as though the missing file is empty, so that it outputs the entire contents of the file that actually exists. (It is output as either an insertion or a deletion, depending on whether the missing file is in the first or the second position.) To do this, use the --new-file (-N) option.

0
rodee On
diff -ur --exclude=".git" dir1/ dir2/ | grep -i "only in dir1" | awk '{print $3 $4}' | sed 's/\:/\//' | xargs cat | wc -l

I am adding this command's output with the deletions(-) count spit by the diffstat command in the question to get the actual deletions count, similarly for the insertions(+) count.