1

While in a git repository, I can do :

git log --oneline --stat

and I'll have a nice output looking like:

ca0ab77 commit message
a/file/changed | 19 -------------------
1 file changed, 19 deletions(-)

In my case, I am working outside a git repository and I only have the .diff (the output of git diff <commit-ish>) files and I would like to have the same stats (Files changed, additions, deletions).

Is there a tool to do it ? Or should I write a regex ?

Thomas Dickey
  • 51,086
  • 7
  • 70
  • 105
Mathieu Nls
  • 2,285
  • 2
  • 17
  • 32

1 Answers1

3

The histogram with +/- signs and the "1 file changed, ..." is known as the diffstat. The diffstat tool (man page) can produce these if you feed it your diff:

$ diffstat -p1 my-patch.diff
src/some_file.c |    4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

If you only want the last line, use -s:

$ diffstat -s my-patch.diff
1 file changed, 2 insertions(+), 2 deletions(-)

Using -p1 is probably a good idea if you're feeding it git diffs which have a/b prefixes. If you don't use -p, diffstat strips common prefixes from the filenames. Sometimes this can give you unexpected results (especially if your patch adds or deletes files by comparing them with /dev/null).

Diffstat can also give you coloured histograms if you use the -C option.

benj
  • 713
  • 6
  • 12