在Windows中配置兼容于VS Code的GPG签名服务
在Git中,可以通过GPG加密的方式保证在commit传输的过程中不受篡改。在Windows中,可以用VS Code自带的版本控制提交带GPG签名的commit。但是一遇到对应的GPG密钥带有密码的时候,VS Code自带的版本控制(准确地来说是所调用的git程序)就无法对commit进行签名。具体会提示gpg: cannot open tty 'no tty': No such file or directory
。原因在于gpg
程序无法获取密码以进行签名。由于文档的不足,我尝试了很多方法去解决这一问题。最近看到#17014之后,突然了解了需要gpg-agent
才能使GPG签名功能正常使用。本文将会描述如何在Windows中做出这些改变。
¶准备工作
本文将不会描述如何使用gpg
,如果想了解这一方面的信息的话,推荐阅读GPG入门教程或git文档-签署工作
由于cygwin中的gnupg
不自带gpg-agent
,我们需要一个自带gpg-agent
的gpg
版本。在Windows平台下,流行的选择是gpg4win。下载安装包,然后安装在任意目录之下。但是此时,签署功能仍然无法工作,一是因为gpg-agent
未打开,二是因为git
不知道新的gpg
在哪,仍然会尝试使用旧的gpg
导致问题。
¶配置
首先我们要在新的gpg
下新建密钥,此部分请参见之前提到的教程,这里不在阐述。之后,在你最喜欢的命令行工具中执行
1 | gpg-agent |
以开启gpg-agent。
最后,我们要通知git
新的gpg
的位置,执行
1 | git config --global gpg.program "your/path/to/gpg" |
此时,签署功能应该可以正常使用了。