WSLにgpgをインストールすればGPG署名ができるようになるけど、ttyにパスフレーズ入力ウィンドウが表示されるので、使うのにコツが要る。
code
コマンドでVSCodeを起動したら、commit時には code
コマンドを叩いた元のターミナルを開かないとパスフレーズが入力できない。ターミナルを閉じていたらcommit不能になる。
GUIでパスフレーズを入力できないと詰むので、Windows側にGpg4winをインストールして、同梱されているpinentry.exeを使うのがよい。
~/.gnupg/gpg-agent.conf
に以下を指定する。
/mnt/c
経由で直接pinentry.exeのパスを指定してやるとすんなり動く。
pinentry-program /mnt/c/Program Files (x86)/Gpg4win/bin/pinentry.exe
こうするとCUI上でcommitするときもGUIの入力ウィンドウが出てくるけど諦めるしかない気がする。Xサーバを使うとWSL上のpinentryでGUIのダイアログを表示することができる?
git commit時にGPG署名するようになったモチベーションとしては、GitHub Actionsを使ったDDoSに巻き込まれた - 私が歌川です のときに、攻撃者のcommit logに自分の名前やアイコンが表示されていて気味が悪かった、というのがある。見るからにcommit logがおかしいのはそうだけど、見た目の上で自分になりすまされるのは気分がよくない。