Sourcetree for WindowsでコミットにGPGで署名する
上記画像のようにgithubでは署名してあるコミットにはVerifiedの印が付く。
署名したい...といっても、Sourcetree for Windowsは署名に対応してない(Mac版は対応してる模様)ので強引に対応させた時のメモ。
鍵は既に生成済みという前提で話を進めます。
Gpg4winを導入する
既に導入済みなら飛ばしてください。
KleopatraというGUIツールが付いてくるのでありがたく使わせてもらって、ここでLinux環境で使っていた鍵をインポートした。
一応パスが通ってるかの確認も込めて、Powershellからgpg --list-secret-keys
を実行してみる。
PS C:\Users\izumin> gpg --list-secret-keys C:/Users/izumin/AppData/Roaming/gnupg/pubring.kbx ------------------------------------------------- sec rsa4096 2018-03-06 [SC] 28CCF1B13BB7557AA13039949B215618569CB439 uid [ 究極 ] Izumi Ohishi <ohishiizumi@example.com> ssb rsa4096 2018-03-06 [E]
大丈夫そうですね。
Git for Windowsの設定を弄る
Powershellから以下のコマンドを実行。
> git config --global user.signingkey 28CCF1B13BB7557AA13039949B215618569CB439 > git config --global commit.gpgsign true > git config --global gpg.program $((gcm gpg).Definition)
※Powershellでは(gcm gpg).Definition
と実行してあげることで*nix環境のwhichコマンドと同じ事ができる模様。
※Sourcetree側で対応してないならデフォルトで署名つけるようにすれば良いのでは?という強引な解決策なのでSourcetreeのGUIから今回だけは署名したくないみたいなことは出来ないです。
※Git for Windows付属のGnuPGはちょっとおバカなので(あるはずもない/dev/ttyを参照したりとか)使わないようにします。
※Sourcetree内蔵のgitで同じことが出来るかどうかは未確認です。
ちなみにこの設定により、以後デフォルトでコミットにここで設定した鍵で署名が付くようになるので注意。
あとは普通に今まで通りのようにcommitするだけ
コミット処理中に鍵のパスワードを求めるダイアログが出てくるので、入力してOKを押せば大丈夫です。
あとがき
いい加減Windows版も対応してくれ....(悲願)
Setup GPG to sign commits within SourceTree - Atlassian Documentation
一応公式に設定方法のドキュメントはあるが、これはmacOS版だけなのでWindows版では同じことは出来ない模様。(今のところは)