git commit не подписывает должным образом с GPG на OSX - PullRequest
0 голосов
/ 14 декабря 2018

Я пытался заставить 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

1 Ответ

0 голосов
/ 21 декабря 2018

Поскольку Git пытается использовать gpgsm, вероятно, у вас есть какая-то конфигурация, которая настроена на использование gpgsm в качестве программы для подписи вещей.Возможно, вы захотите запустить git config -l --show-origin и посмотреть, есть ли опция, позволяющая Git использовать gpgsm.Вы можете выполнить поиск gpg, так как все параметры установлены в этом разделе верхнего уровня.

...