From: Junio C Hamano Date: Wed, 18 Jan 2017 20:57:12 GMT Subject: Re: "git diff --ignore-space-change --stat" lists files with only whitespace differences as "changed" Message-ID: In-Reply-To: <20170118111705.6bqzkklluikda3r5@sigill.intra.peff.net> Jeff King writes: > So I dunno. A sensible rule to me is "iff -p would show a diff header, > then --stat should mention it". True but tricky (you need a better definition of "a diff header"). In addition to a new and deleted file, does a file whose executable bit was flipped need mention? If so, then "diff --git" is the diff header in the above. Otherwise "@@ ... @@", iow, "iff -p would show any hunk". I think the patch implements the latter, which I think is sensible. > + /* > + * Omit diffstats where nothing changed. Even if > + * !same_contents, this might be the case due to ignoring > + * whitespace changes, etc. > + * > + * But note that we special-case additions and deletions, > + * as adding an empty file, for example, is still of interest. > + */ > + if (DIFF_FILE_VALID(one) && DIFF_FILE_VALID(two)) { > + struct diffstat_file *file = > + diffstat->files[diffstat->nr - 1]; > + if (!file->added && !file->deleted) { > + free_diffstat_file(file); > + diffstat->nr--; > + } > + } > }