Thread (3 messages) flat view 3 messages, 3 authors, 2026-02-25

Re: --no-decorate and %d in git-log(1)

From: Marc Branchaud <hidden>
Date: 2026-02-25 21:46:16

On 2026-02-25 13:08, Junio C Hamano wrote:
Marc Branchaud [off-list ref] writes:
quoted
BTW, --decorate=auto is documented as "if the output is going to a
terminal, the ref names are shown as if `short` were given, otherwise no
ref names are shown."  But in my experiments %d still shows refs even
when the output is piped to a file.  Seems like another symptom of the
same bug?
Isn't that documentation merely referring to "git log" without
"--format=... %d ..." and not about the case where you explicitly
ask for "%d"?  That is, the description is there to explain the
differences between

	git log --oneline --decorate=auto -1
	git log --oneline --decorate=auto -1 | cat

isn't it?
I'm sure that's how the code works, but I don't see any indication in 
the documentation that this is for when --format isn't used or when the 
format doesn't contain %d.  The descriptions of --decorate and --format 
mostly just ignore each other.

We do have this at the end of the --format section:

	The %d and %D placeholders will use the "short"
	decoration format if --decorate was not already
	provided on the command line.

Given this documented connection between %d/%D and --decorate, it seems 
reasonable for a reader to assume that --decorate=auto would do the same 
thing regardless of whether or not a --format=...%d... was present.
I think --decorate=auto is the default so the above
without --decorate=auto would behave similarly.
quoted
(Do people who use `--format` (with or without %d) *also* use
`--decorate`?  It seems like the two are naturally exclusive, even if
the code allows them both.)
That is an interesting question, but I am not sure if it affects how
we decide to resolve this discussion.
Yeah, it's more philosophical, though if we did know the answer was "the 
two are almost never used together" we'd be more comfortable changing 
how --decorate=no and --format=%d interact.

I note that currently --decorate has no effect at all if the --format 
doesn't contain %d or %D.  To me this bolsters the argument for making 
--decorate=no suppress %d/%D.


To expand on my earlier point: --decorate=no currently has the same 
effect on %d/%D as --decorate=short, so it seems to me that we can 
change what --decorate=no does because if anyone needs to preserve the 
existing behavior for their favorite --format they can just use 
--decorate=short.  (I'd be surprised if anyone is using --decorate=no to 
ensure that they get the short ref names).

		M.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help