Subject: Re: [PATCH v2] diff: add --compact-summary option to complement --stat

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Thu, 18 Jan 2018 22:23:45 +0100

On Thu, Jan 18 2018, Nguyễn Thái Ngọc Duy jotted:

> This is partly inspired by gerrit web interface which shows diffstat
> like this, e.g. with commit 0433d533f1 (notice the "A" column on the
> third line):
>
>
>      Documentation/merge-config.txt     |  4 +
>      builtin/merge.c                    |  2 +
>    A t/t5573-pull-verify-signatures.sh  | 81 ++++++++++++++++++
>      t/t7612-merge-verify-signatures.sh | 45 ++++++++++
>    4 files changed, 132 insertions(+)

This feature is awesome. This has bothered me about --stat, but I
haven't done anything about it.

> In other words, certain information currently shown with --summary is
> embedded in the diffstat. This helps reading (all information of the
> same file in the same line instead of two) and can reduce the number of
> lines if you add/delete a lot of files.

Wait, isn't there a bug here in the existing --summary code, its
documentation says it'll show information "such as creations, renames
and mode changes".

But even though your --compact-summary shows that the file is being
added and its mode changed:

    $ diff -ru <(./git-show --stat 0433d533f1) <(./git-show --stat --compact-summary 0433d533f1)
    --- /dev/fd/63  2018-01-18 21:11:51.186570555 +0000
    +++ /dev/fd/62  2018-01-18 21:11:51.186570555 +0000
    @@ -14,8 +14,8 @@
           t: add tests for pull --verify-signatures
           merge: add config option for verifySignatures

    - Documentation/merge-config.txt     |  4 ++
    - builtin/merge.c                    |  2 +
    - t/t5573-pull-verify-signatures.sh  | 81 ++++++++++++++++++++++++++++++++++++++
    - t/t7612-merge-verify-signatures.sh | 45 +++++++++++++++++++++
    +     Documentation/merge-config.txt     |  4 ++
    +     builtin/merge.c                    |  2 +
    + A+x t/t5573-pull-verify-signatures.sh  | 81 ++++++++++++++++++++++++++++++++++
    +     t/t7612-merge-verify-signatures.sh | 45 +++++++++++++++++++
      4 files changed, 132 insertions(+)

There is no difference between --stat with and without --summary on the
same commit, shouldn't it show "create mode [...]" ?

E.g. 95450bbbaa will do the trick for both:

    $ diff -ru <(./git-show --stat 95450bbbaa) <(./git-show --stat --summary 95450bbbaa)
    --- /dev/fd/63  2018-01-18 21:14:20.770050599 +0000
    +++ /dev/fd/62  2018-01-18 21:14:20.770050599 +0000
    @@ -14,3 +14,4 @@
      git-svn.perl                    |  1 +
      t/t9169-git-svn-dcommit-crlf.sh | 27 +++++++++++++++++++++++++++
      2 files changed, 28 insertions(+)
    + create mode 100755 t/t9169-git-svn-dcommit-crlf.sh

    $ diff -ru <(./git-show --stat --summary 95450bbbaa) <(./git-show --stat --compact-summary 95450bbbaa)
    --- /dev/fd/63  2018-01-18 21:14:30.646016210 +0000
    +++ /dev/fd/62  2018-01-18 21:14:30.646016210 +0000
    @@ -11,7 +11,6 @@
         Reported-by: Brian Bennett <[email-masked]>
         Signed-off-by: Eric Wong <[email-masked]>

    - git-svn.perl                    |  1 +
    - t/t9169-git-svn-dcommit-crlf.sh | 27 +++++++++++++++++++++++++++
    +     git-svn.perl                    |  1 +
    + A+x t/t9169-git-svn-dcommit-crlf.sh | 27 +++++++++++++++++++++++++++
      2 files changed, 28 insertions(+)
    - create mode 100755 t/t9169-git-svn-dcommit-crlf.sh

> +--compact-summary::
> +	Output a condensed summary of extended header information in
> +	front of the file name part of diffstat. This option is
> +	ignored if --stat is not specified.
> ++

If for some reason the lack of information about the commit under
--summary isn't a bug/fixable it makes sense to document the differences
here.

> +File creations or deletions are denoted wigth "A" or "D" respectively,

s/wigth/with/

> +optionally "+l" if it's a symlink, or "+x" if it's executable.
> +Mode changes are shown "M+x" or "M-x" for adding or removing

"Mode changes are shown as" is better worded.