threads / discuss / 64353

No config option for `git diff --stat` to always show the full file path and name (without .../ abbreviations)

Subject: No config option for `git diff --stat` to always show the full file path and name (without .../ abbreviations)

## tl;dr

5 messages between Oct 19, 2025 and Oct 22, 2025.

replies: 4people: 4as markdown or json

Дилян Палаузов· Oct 19, 2025, 18:46 UTC · lore
Hello,
After `git diff --stat` determines the available width, it uses correctly all available space for the file paths and names:
```
$ git show --stat --oneline 
0fb93104ba (HEAD -> java223/main) SourceGenerator: avoid delayed actions after the bundle is deactivated
 .../main/java/org/openhab/automation/java223/internal/Java223ScriptEngineFactory.java    |  1 +
 .../java/org/openhab/automation/java223/internal/codegeneration/SourceGenerator.java     | 16 +++++++++++-----
 2 files changed, 12 insertions(+), 5 deletions(-)
```
https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---statwidthname-widthcount describes that after --stat can be entered up to three numbers, two of which can be set by a config option.  The same options apply also for show --stat : https://git-scm.com/docs/git-show#Documentation/git-show.txt---statwidthname-widthcount .
I set in /etc/gitconfig:
[diff]
        statGraphWidth = 200
        statNameWidth = 200
which is effectively the same as calling:
```
$ git show --stat-graph-width=200 --stat-graph-width=200 --oneline
0fb93104ba (HEAD -> java223/main) SourceGenerator: avoid delayed actions after the bundle is deactivated
 .../main/java/org/openhab/automation/java223/internal/Java223ScriptEngineFactory.java    |  1 +
 .../java/org/openhab/automation/java223/internal/codegeneration/SourceGenerator.java     | 16 +++++++++++-----
 2 files changed, 12 insertions(+), 5 deletions(-)
```
There is no difference.  diff.statGraphWidth / diff.statNameWidth / --stat-graph-width= / --stat-graph-width=200 set some number of columns within the available space.  But I want to change the size of the available space to defaut to 200 (or to infinity).
The reason is that I can then copy the file path (e.g. with the mouse) from the git --stat output and open it immediately with less or emacs.
* Please either alter the option `diff.statGraphWidth` to enlarge the available space (broader than the terminal width), or add an option to `git config` to set the available space for `--stat`.  This option should eventually allow always to print the full path and filenames.
Greetings
  Дилян
---
git 2.51.0
Ben Knoble· Oct 20, 2025, 00:59 UTC · re: Дилян Палаузов · lore

Re: No config option for `git diff --stat` to always show the full file path and name (without .../ abbreviations)

> Le 19 oct. 2025 à 14:50, Дилян Палаузов <dilyan.palauzov@aegee.org> a écrit :
[snip]
> The reason is that I can then copy the file path (e.g. with the mouse) from the git --stat output and open it immediately with less or emacs.
You might be interested in git-jump in the contrib area.
Jeff King· Oct 21, 2025, 08:14 UTC · re: Дилян Палаузов · lore

Re: No config option for `git diff --stat` to always show the full file path and name (without .../ abbreviations)

On Sun, Oct 19, 2025 at 09:46:10PM +0300, Дилян Палаузов wrote:
> * Please either alter the option `diff.statGraphWidth` to enlarge the
> available space (broader than the terminal width), or add an option to
> `git config` to set the available space for `--stat`.  This option
> should eventually allow always to print the full path and filenames.

It does seem funny that we have config options for 2 out of 3 of the numbers you can specify via --stat. So adding diff.statTotalWidth or something would make sense to me. I'd guess nobody has asked for it yet because it defaults to the terminal width, so a static config option risks overflowing your terminal if it's too high. On the other hand, if we are going to show it in a pager anyway, they usually support horizontal scrolling. And I guess it's all a matter of preference.

Anyway, one more possible hack: you can set COLUMNS if you want to pretend you have a really big terminal. I.e., "export COLUMNS=200" would probably do what you want without any new Git feature.

-Peff
Junio C Hamano· Oct 21, 2025, 14:46 UTC · re: Jeff King · lore

Re: No config option for `git diff --stat` to always show the full file path and name (without .../ abbreviations)

Jeff King <peff@peff.net> writes:
> Anyway, one more possible hack: you can set COLUMNS if you want to
> pretend you have a really big terminal. I.e., "export COLUMNS=200" would
> probably do what you want without any new Git feature.
;-)

Isn't that the exact purpose of that environment variable? It feels a bit unfair to the variable to call it a hack.

Jeff King· Oct 22, 2025, 09:15 UTC · re: Junio C Hamano · lore

Re: No config option for `git diff --stat` to always show the full file path and name (without .../ abbreviations)

On Tue, Oct 21, 2025 at 07:46:13AM -0700, Junio C Hamano wrote:
Show 10 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > Anyway, one more possible hack: you can set COLUMNS if you want to
> > pretend you have a really big terminal. I.e., "export COLUMNS=200" would
> > probably do what you want without any new Git feature.
> 
> ;-)
> 
> Isn't that the exact purpose of that environment variable?  It feels
> a bit unfair to the variable to call it a hack.

Yes, though I think OP wanted something that would work for every invocation of git, without having to pass it explicitly (otherwise they could just use "--stat=200"). Setting COLUMNS=200 sounds like a risky proposition if you run other programs besides Git.

-Peff

← back to recent threads