Re: Bug: git log with log.showSignature enabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2024-01-06 at 16:56:29, Maxim Iorsh wrote:
> 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@xxxxxxxxxxxxxxxxxxxxx"
> gpg: Good signature from "Maxim Iorsh <iorsh@xxxxxxxxxxxxxxxxxxxxx>" [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

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux