Я пытался заставить git
работать с ключом gpg
, и после долгих поисков и прочтения сообщений единственное, что мне подходит, это:
sudo rm /usr/local/bin/gpgsm
ln -s /usr/local/bin/gpg /usr/local/bin/gpgsm
Этоgit
помогает выполнить команду gpg
вместо команды gpgsm
, как показано здесь:
GIT_TRACE=1 git commit -S -m"test"
21:24:25.489158 git.c:418 trace: built-in: git commit -S -mtest
21:24:25.493338 run-command.c:643 trace: run_command: gpgsm --status-fd=2 -bsau myKey
error: gpg failed to sign the data
fatal: failed to write commit object
Я не могу найти дополнительную информацию о том, почему git
выполняет gpgsm
команда, так как выполнение команды само по себе дает:
gpgsm --status-fd=2 -bsau myKey
gpgsm: can't sign using 'myKey': No public key
[GNUPG:] INV_SGNR 1 myKey
[GNUPG:] INV_RECP 1 myKey
Что, кажется, имеет смысл, когда я читаю gpg
и gpgsm
БД раздельные.
gpgsm
ключиПохоже, что git
тоже не хочет использовать, исходя из их потребности в записях CN и DNS.Рад, что здесь вы ошиблись, поскольку я бы предпочел не использовать мой хак с символической ссылкой.
Подробности среды:
- gpg установка через homebrew, версия
2.2.11
- Добавление
no-tty
к ~/.gnupg/gpg.conf
фактически ухудшило мою ситуацию. - Я перезапустился после изменений, чтобы агенты gpg умерли.
- Содержимое
~/.gnupg/gpg-agent.conf
: pinentry-program /usr/local/bin/pinentry