Essentially what I want is to not have to type in the password every single time I commit in git.
When looking for a solution i found this.
So it's telling me to set default-cache-ttl and max-cache-ttl in the config file. But that file doesn't seem to be in C:\users<name>.gnupg in my installation. (I'm running windows 10, GPG version 2.2.23 according to gpg --version)
I next found this post which suggests that that will be in %appdata%\gnupg which the file is not there. I try to add this file with the following contents:
default-cache-ttl 2592000
max-cache-ttl 2592000
when I restart gpg with the following commands
gpgconf.exe --reload gpg-agent
gpgconf.exe --list-options gpg-agent
it outputs this:
Monitor:1:0:Options controlling the diagnostic output:0:0::::
verbose:12:0:verbose:0:0::::
quiet:8:0:be somewhat more quiet:0:0::::
Configuration:1:0:Options controlling the configuration:0:0::::
disable-scdaemon:8:1:do not use the SCdaemon:0:0::::
enable-ssh-support:0:0:enable ssh support:0:0::::
ssh-fingerprint-digest:24:2:use ALGO to show ssh fingerprints:1:1:ALGO:"md5::
enable-putty-support:0:0:enable putty support:0:0::::
Debug:1:1:Options useful for debugging:0:0::::
debug-level:26:1:set the debugging level to LEVEL:1:1:LEVEL:"none::
log-file:8:1:write server mode logs to FILE:32:1:FILE:::
Security:1:0:Options controlling the security:0:0::::
default-cache-ttl:24:0:expire cached PINs after N seconds:3:3:N:600::2592000
default-cache-ttl-ssh:24:1:expire SSH keys after N seconds:3:3:N:1800::
max-cache-ttl:24:2:set maximum PIN cache lifetime to N seconds:3:3:N:7200::2592000
max-cache-ttl-ssh:24:2:set maximum SSH key lifetime to N seconds:3:3:N:7200::
ignore-cache-for-signing:8:0:do not use the PIN cache when signing:0:0::::
allow-emacs-pinentry:8:1:allow passphrase to be prompted through Emacs:0:0::::
grab:8:2::0:0::::
no-allow-external-cache:8:0:disallow the use of an external password cache:0:0::::
no-allow-mark-trusted:8:1:disallow clients to mark keys as "trusted":0:0::::
no-allow-loopback-pinentry:8:2:disallow caller to override the pinentry:0:0::::
Passphrase policy:1:1:Options enforcing a passphrase policy:0:0::::
enforce-passphrase-constraints:8:2:do not allow bypassing the passphrase policy:0:0::::
min-passphrase-len:24:1:set minimal required length for new passphrases to N:3:3:N:8::
min-passphrase-nonalpha:24:2:require at least N non-alpha characters for a new passphrase:3:3:N:1::
check-passphrase-pattern:24:2:check new passphrases against pattern in FILE:32:1:FILE:::
max-passphrase-days:24:2:expire the passphrase after N days:3:3:N:0::
enable-passphrase-history:8:2:do not allow the reuse of old passphrases:0:0::::
pinentry-timeout:24:1:set the Pinentry timeout to N seconds:3:3:N:0::
which seems to suggest that this is working, even though it's not. What am I missing here?
I had a similar issue and found this answer helpful.
Turns out I had two versions of gpg installed. One installed with Git and another one installed manually. I was configuring the manual one, but git was using a different one.
The big gotcha, though, is that Git also installs its own version of GnuPG (gpg.exe), and uses it by default. The version that comes with Git uses
%USERPROFILE%\.gnupg
. On modern versions of Windows, this would beC:\Users\%USERNAME%\.gnupg
.
https://superuser.com/questions/1068980/where-is-my-gpgconf-file-on-windows