git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Bug: git log with log.showSignature enabled

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Jan 6, 2024, 18:21 UTC
Message-ID
<ZZmaQ0RoxJpU2PSH@tapette.crustytoothpaste.net>
In-Reply-To
<CADQ_TR56X_iMitPEiaOyR_h=1dp9ThUQMu_Vqjest1i8xbh9Tw@mail.gmail.com>
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
Previous: Maxim Iorsh
Message 2 of 2 in “Bug: git log with log.showSignature enabled”
  1. Maxim IorshJan 6, 2024
  2. brian m. carlsonJan 6, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.