threads / bug / 60691

Bug: git log with log.showSignature enabled

Subject: Bug: git log with log.showSignature enabled

## tl;dr

2 messages between Jan 6, 2024 and Jan 6, 2024.

replies: 1people: 2as markdown or json

Maxim Iorsh· Jan 6, 2024, 16:56 UTC · lore

Thank you for filling out a Git bug report! Please answer the following questions to help us understand your issue.

What did you do before the bug happened? (Steps to reproduce your issue)

iorsh-linux:~/devel/fontforge/build> git log -n 1 --oneline 2aa98f6a5 (HEAD -> master) Dummy signed commit iorsh-linux:~/devel/fontforge/build> git config log.showSignature true iorsh-linux:~/devel/fontforge/build> git log -n 1 --oneline 2aa98f6a5 (HEAD -> master) gpg: Signature made 17:47:50 2024 ינו 06 ש' IST gpg: using RSA key XXXXXXXXXX gpg: issuer "iorsh@users.sourceforge.net" gpg: Good signature from "Maxim Iorsh <iorsh@users.sourceforge.net>" [ultimate] Dummy signed commit

What did you expect to happen? (Expected behavior)

When asked for oneliner or any specific format, `git log` shouldn't show signature event when configured.

What happened instead? (Actual behavior)

`git log` always show signatures with log.showSignature enabled, even for explicit formatting requests.

What's different between what you expected and what actually happened?
Anything else you want to add:

This behavior obviously breaks any script which relies on git log to produce preformatted info about commits. It's also quite rare, becaus e probably very few users set log.showSignature config option.

Please review the rest of the bug report below. You can delete any lines you don't wish to share.

[System Info] git version: git version 2.34.1 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 5.15.0-91-generic #101-Ubuntu SMP Tue Nov 14 13:30:08 UTC 2023 x86_64 compiler info: gnuc: 11.4 libc info: glibc: 2.35 $SHELL (typically, interactive shell): /bin/tcsh

[Enabled Hooks]
brian m. carlson· Jan 6, 2024, 18:21 UTC · re: Maxim Iorsh · lore

Re: Bug: git log with log.showSignature enabled

On 2024-01-06 at 16:56:29, Maxim Iorsh wrote:
Show 32 quoted lines
> Thank you for filling out a Git bug report!
> Please answer the following questions to help us understand your issue.
> 
> What did you do before the bug happened? (Steps to reproduce your issue)
> 
> iorsh-linux:~/devel/fontforge/build> git log -n 1 --oneline
> 2aa98f6a5 (HEAD -> master) Dummy signed commit
> iorsh-linux:~/devel/fontforge/build> git config log.showSignature true
> iorsh-linux:~/devel/fontforge/build> git log -n 1 --oneline
> 2aa98f6a5 (HEAD -> master) gpg: Signature made 17:47:50 2024 ינו 06 ש' IST
> gpg:                using RSA key XXXXXXXXXX
> gpg:                issuer "iorsh@users.sourceforge.net"
> gpg: Good signature from "Maxim Iorsh <iorsh@users.sourceforge.net>" [ultimate]
> Dummy signed commit
> 
> What did you expect to happen? (Expected behavior)
> 
> When asked for oneliner or any specific format, `git log` shouldn't
> show signature event when configured.
> 
> What happened instead? (Actual behavior)
> 
> `git log` always show signatures with log.showSignature enabled, even
> for explicit formatting requests.
> 
> What's different between what you expected and what actually happened?
> 
> Anything else you want to add:
> 
> This behavior obviously breaks any script which relies on git log to
> produce preformatted info about commits. It's also quite rare, becaus
> e probably very few users set log.showSignature config option.

I think this is behaving as designed. git log is a porcelain command, which means it's designed for the user to use, but is not intended for scripting. The documentation for `log.showSignature` says this:

  If true, makes git-log(1), git-show(1), and git-whatchanged(1) assume --show-signature.

As long as the output is what you would have gotten if you manually added --show-signature, the result is correct.

However, if you want to script things, you can use git rev-list, which is a plumbing command that's specifically designed to allow scripting. It works very similarly to git log, but doesn't have configuration options that change its behaviour, so it doesn't suffer from this problem.

For example, on one of my branches, I get this:

$ git rev-list -n 1 --oneline HEAD 404bf1f83a credential: add an argument to keep state

Note that the implicit HEAD of git log doesn't work with git rev-list, so you need to specify HEAD explicitly.

-- 
brian m. carlson (he/him or they/them)
Toronto, Ontario, CA

← back to recent threads