Настройка GPG для Git в Windows

Я установил Git для Windows, включая Git Bash в Windows 10 и Gpg4win. По умолчанию мне пришлось повторно импортировать все ключи, созданные мной через Kleopatra, в версию GPG, встроенную в Git Bash, и это не позволит мне настроить агента. Что мне нужно сделать, так это автоматизировать пение, так что мне не нужно вводить пароль каждый раз, а только в первый раз за определенный период времени. Как это возможно?

Я попытался следовать этому руководству, но gpg2 не использует правильную кодировку при исполнении из Git Bash, поэтому он не распознает ключи, которые содержат символы, отличные от ASCII.

Есть ли способ решить эту проблему? Каков наилучший способ использования подписки PGP с Git в Windows?

Ответ 1

Обновление октябрь 2018, как прокомментировал PHPirate ниже:

λ git --version
git version 2.19.1.windows.1

λ gpg --version
gpg (GnuPG) 2.2.9-unknown
libgcrypt 1.8.3
Copyright (C) 2018 Free Software Foundation, Inc.

Никаких следов этого обновления в git-for-windows/git/releases


Оригинальный ответ (2017): по умолчанию Git для Windows включает gpg1, а не gpg2

[email protected] MINGW64 ~/.ssh
$ gpg --version
gpg (GnuPG) 1.4.21

Использование другого gpg действительно рекомендуется:

git config --global gpg.program "c:/Program Files (x86)/GnuPG/bin/gpg.exe"

Попробуйте еще раз с последней версией Git для Windows с UTF-8, установленной в локали.
Попробуйте Git по упрощенному пути, чтобы исключить любые помехи от других программ.

Ответ 2

Поскольку (по крайней мере) git 2.19.1, git включает gpg2!

Это означает, что вам больше не нужно устанавливать gpg4win только для подписи git. Вы спрашиваете, как настроить подпись коммитов таким образом, чтобы вам нужно было вводить фразу-пароль только после определенного времени ожидания: gpg-agent может с этим справиться, и я проверял, что она работает с git gpg (но не с gnupg gpg). Хотя это не всегда работает для меня, это должно работать в целом.

Ниже приводится краткое изложение полных инструкций, которые я написал здесь, при условии, что у вас настроена подпись:

  1. Убедитесь, что вы используете git gpg
  2. Обновите время кэширования, в C:\Users\username\.gnupg\gpg-agent.conf (создайте файл, если он не существует), добавьте default-cache-ttl 34560000 и max-cache-ttl 34560000. Эти времена в секундах, выберите все, что вы хотите.
  3. Перезапустите gpg-agent, используя gpgconf --kill gpg-agent.