Skip to contentSkip to conversation

Commits are no longer gpg-signed in 2.9.0 when "commit.gpgsign" is enabled

DISCUSSION Nils Fenner 3 participants 5 messages Jul 11, 2016

lore
Share & tools
lore
#0 lore raw

Hey Git community,

since Version 2.9.0, the configuration option "commit.gpgsign" doesn't work as users would expect. By committing via 'git gui' (or usual 'git commit' without further option), commits are not being auto-signed any longer, when "commit.gpgSign" configuration option is set. I also couldn't find a flag to "workaround" that situation in the GUI. To my understanding, I now have to pass the '-S' option to 'git commit' every time and GUI becomes "impractical to use". Surprisingly, nobody seems having noticed this behavioural change since the release of 2.9.

FYI: In the release log, there's a note stating, that this has been altered in the context of 'git commit-tree'. Maybe this interferes with "normal" behaviour.

Would be happy hearing from you soon. Thanks!

Cheers,
Nils

#1 lore raw

Hi Nils,

I just checked and I have commits made in 2.9 with this option set and I don't seem to have your issue. Here's what I did:

santiago at ~/test-signing ✔ git init
Initialized empty Git repository in /home/santiago/test-signing/.git/ santiago at ~/test-signing ✔ hub create
Updating origin
Enter passphrase for key '/home/santiago/.ssh/id_rsa':
created repository: SantiagoTorres/test-signing
santiago at ~/test-signing ✔ touch testfile
santiago at ~/test-signing ✔ git add testfile
santiago at ~/test-signing ✔ git commit
i[master (root-commit) 6de1ad2] TEST: tests git autocommit setting
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 testfile
santiago at ~/test-signing ✔ git log --show-signature
commit 6de1ad20237f042433f8b94a3bf8c7cc41711d90 (HEAD -> refs/heads/master)
gpg: Signature made Mon 11 Jul 2016 10:40:41 AM EDT using RSA key ID 468F122CE8162295
gpg: Good signature from "Santiago Torres <[email protected]>" [ultimate]
gpg: aka "Santiago Torres-Arias <[email protected]>" [ultimate]
Author: Santiago Torres <[email protected]>
Date: Mon Jul 11 10:40:32 2016 -0400

TEST: tests git autocommit setting
santiago at ~/test-signing ✔ git push origin master Enter passphrase for key '/home/santiago/.ssh/id_rsa':
Counting objects: 3, done.
Writing objects: 100% (3/3), 879 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:SantiagoTorres/test-signing.git
* [new branch] master -> master
santiago at ~/test-signing ✔ git --version
git version 2.9.0
santiago at ~/test-signing ✔

You can check the github repository

Do you have a mwe/.gitconfig so I can take a look at it?

I wonder if this issue is similar to what happened in mutt, where gpg doesn't show the password prompt using gpg-agent and it silently failed.

Thanks,
-Santiago.

Quoted 25 lines · Nils Fenner

Hey Git community,

since Version 2.9.0, the configuration option "commit.gpgsign" doesn't work as users would expect. By committing via 'git gui' (or usual 'git commit' without further option), commits are not being auto-signed any longer, when "commit.gpgSign" configuration option is set. I also couldn't find a flag to "workaround" that situation in the GUI. To my understanding, I now have to pass the '-S' option to 'git commit' every time and GUI becomes "impractical to use". Surprisingly, nobody seems having noticed this behavioural change since the release of 2.9.

FYI: In the release log, there's a note stating, that this has been altered in the context of 'git commit-tree'. Maybe this interferes with "normal" behaviour.

Would be happy hearing from you soon. Thanks!

Cheers,
Nils

--
To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#2 lore raw

Hi Santiago,

repeated your test here and actually found something interesting. When committing via 'git gui', commits are not being gpg-signed, while firing a 'git commit' shows the passphrase dialog and signs the commit correctly.

Here's what I did:

git init gpg-signing-test && cd gpg-signing-test git config --local commit.gpgSign true
echo 'Commits in this repo must all GPG signed!' > aFile.txt git gui --> add change and commit

Result: No dialog shown and not pgp-signed!

Now I went further:
vi aFile.txt --> Prepend a "# " as another change
git commit

Here the passphrase dialog showed up and the commit got correctly signed!

Side-Note: I also set "user. signingkey" in "global" Git configuration.

My local repo's config:

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[commit]
gpgSign = true
[gui]
wmstate = normal
geometry = 872x391+0+0 205 177

Signature · 8 lines
What you mean by wme? Is it the gpg-agent's config or something?

Hope that points in the right direction.

Cheers,
Nils

Am 11.07.2016 um 16:44 schrieb Santiago Torres:
Quoted 73 lines

Hi Nils,

I just checked and I have commits made in 2.9 with this option set and I don't seem to have your issue. Here's what I did:

santiago at ~/test-signing ✔ git init
Initialized empty Git repository in /home/santiago/test-signing/.git/ santiago at ~/test-signing ✔ hub create
Updating origin
Enter passphrase for key '/home/santiago/.ssh/id_rsa':
created repository: SantiagoTorres/test-signing
santiago at ~/test-signing ✔ touch testfile
santiago at ~/test-signing ✔ git add testfile
santiago at ~/test-signing ✔ git commit
i[master (root-commit) 6de1ad2] TEST: tests git autocommit setting
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 testfile
santiago at ~/test-signing ✔ git log --show-signature
commit 6de1ad20237f042433f8b94a3bf8c7cc41711d90 (HEAD -> refs/heads/master)
gpg: Signature made Mon 11 Jul 2016 10:40:41 AM EDT using RSA key ID 468F122CE8162295
gpg: Good signature from "Santiago Torres <[email protected]>" [ultimate]
gpg: aka "Santiago Torres-Arias <[email protected]>" [ultimate]
Author: Santiago Torres <[email protected]>
Date: Mon Jul 11 10:40:32 2016 -0400

TEST: tests git autocommit setting
santiago at ~/test-signing ✔ git push origin master Enter passphrase for key '/home/santiago/.ssh/id_rsa':
Counting objects: 3, done.
Writing objects: 100% (3/3), 879 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:SantiagoTorres/test-signing.git
* [new branch] master -> master
santiago at ~/test-signing ✔ git --version
git version 2.9.0
santiago at ~/test-signing ✔

You can check the github repository

Do you have a mwe/.gitconfig so I can take a look at it?

I wonder if this issue is similar to what happened in mutt, where gpg doesn't show the password prompt using gpg-agent and it silently failed.

Thanks,
-Santiago.

Quoted 25 lines · Nils Fenner

Hey Git community,

since Version 2.9.0, the configuration option "commit.gpgsign" doesn't work as users would expect. By committing via 'git gui' (or usual 'git commit' without further option), commits are not being auto-signed any longer, when "commit.gpgSign" configuration option is set. I also couldn't find a flag to "workaround" that situation in the GUI. To my understanding, I now have to pass the '-S' option to 'git commit' every time and GUI becomes "impractical to use". Surprisingly, nobody seems having noticed this behavioural change since the release of 2.9.

FYI: In the release log, there's a note stating, that this has been altered in the context of 'git commit-tree'. Maybe this interferes with "normal" behaviour.

Would be happy hearing from you soon. Thanks!

Cheers,
Nils

--
To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#3 lore raw
Quoted 5 lines · Nils Fenner

Hi Santiago,

repeated your test here and actually found something interesting. When committing via 'git gui', commits are not being gpg-signed, while firing a 'git commit' shows the passphrase dialog and signs the commit correctly.

I have the feeling that this is an issue with your gpg configuration not playing well with the gui. Do you know which pinentry program is being used (e.g., type /usr/bin/pinentry).

Quoted 2 lines

What you mean by wme? Is it the gpg-agent's config or something?

Sorry, I meant a Minimum Working Example, although that'll be hard to reproduce in this case. Your configuration seems to be proper.

Quoted 1 line

Hope that points in the right direction.

I think that we can take further troubleshooting off-list. This doesn't seem to be behavior with git (although we can come back with a bug report if something is naturally-broken/could be improved)

Cheers!
-Santiago.