使用 GnuPG2 为 Git 版本签名

@zen
2016年10月24日

从很久很久以前开始,我就一直用 GnuPG 对自己提交的 Git 代码签名。最初地时候是为了装X,后来则是为了确保代码的可靠性——毕竟 git config 都是随便写的。今天因为更换 Homebrew,顺路就更新到了 GnuPG2。但是,问题来了…

git commit -veS 报错:

You need a passphrase to unlock the secret key for
user: "Snakevil Zen <zsnakevil@gmail.com>"
1024-bit RSA key, ID 37B86419, created 2015-02-02

gpg-agent[19813]: command get_passphrase failed: Inappropriate ioctl for device
gpg: problem with the agent: Inappropriate ioctl for device
gpg: skipped "37B86419": Operation cancelled
gpg: signing failed: Operation cancelled
error: gpg failed to sign the data
fatal: failed to write commit object

这是什么鬼?之前用 GnuPG 地时候可从来没有碰到过这种问题。

搜索,按照攻略添加一个环境变量搞定。

export GPG_TTY=$( tty )

因为我肯定用地是自己的 Bashrc.X 嘛(无耻打一波广告),所以实际上是添加了一个配置脚本 ~/.bashrc.x/bashrc.d/01-env.sh。无脑代码如下:

echo 'export GPG_TTY=$( tty )' >> ~/.bashrc.x/bashrc.d/01-env.sh