Windows
bitbucket
TortoiseHg
msys2
VSCode

TortoiseHgでbitbucket鍵認証

前口上

MicrosoftがGitHubを買収しました。GitLabbitbucketへの乗り換えの動きもあるようです。bitbucketの特徴は,gitだけでなくMercurial(コマンドはhg)も選択できることです。

Mercurialもgitと同じ分散型バージョン管理システムで同じようなことができますが,考え方や使い勝手が異なるようです。

CVS, Subversion, gitと使ってきて,gitは仕事やMacPortsのお手伝いに欠かせないものとなっていますが,Subversionが長かったこともありなかなか馴染めないでいます。Mercurialだったら,subversionから乗り換えやすかったかもしれません。

Macなどからコマンドhgは違和感なく使うことができました。ほっとする感じです。一方TortoiseHgには少し戸惑いました。ここでは,TortoiseHgからbitbucketに接続する際に鍵認証する方法について紹介します。

Mercurialの導入

Mac, Debian Linux (WSL), MSYS2には,それぞれMacPorts (コマンドはport), apt, pacmanで導入しました。Windowsでは,TortoiseHgを導入しました。パスが通っていれば,コマンドプロンプトやPowerShellからもhgが使えます。

bitbucketに公開鍵を登録

bitbucketの認証には設定が必要です。ssh-keygenで作った公開鍵(テキスト形式)の中身をコピーしてbitbucketに登録します。

人のアイコン > bitbucket設定で設定画面を表示し,「SSH鍵」をクリックします。「鍵を追加」ボタンをクリックして表示されるフィールドにペーストして「鍵を追加」ボタンをクリックします。

秘密鍵の変換と登録

変換

TortoiseHgに登録する秘密鍵はPuTTY形式です。ssh-keygenのものは変換する必要があります。それをmercurial.iniで指定すると文字化けのようなエラーメッセージが出ました。「mercurial」「文字化け」で検索すると,日本語ファイル名への対応などの結果が表示され遠回りをしました。Unixの常識はWindowsの非常識でした。

パッケージのバージョン管理のしやすさからMSYS2を使っていますので,PuTTYはpacmanでインストールしました。

$ pacman -S mingw64/mingw-w64-x86_64-putty
$ puttygen.exe

puttygenのウインドウで秘密鍵(例えばid_rsa)を指定し,id_rsa.ppkを生成して保存します。

bitbucketのリポジトリに対して,cloneincomingpushpullなどが行えるようになるはずです。

PS C:\Users\takeshi\foo> hg in
ssh://hg@bitbucket.org/yourid/foo と比較中
変更点を探索中
差分はありません

登録

タスクトレイを確認してPageant.exeが起動していない場合は起動します。タスクトレイ
Pageantを右クリックして起動し,puttygenで変換したid_rsa.ppkを選択します。

VSCodeとTortoiseHg Workbench

Visual Studio Codeにはgitが統合されていますが,git専用ではありません。拡張機能HgをインストールすればMercurialでバージョン管理できます。TortoiseHg Workbenchは4.3.1を使っていたのですが,執筆時点最新版の4.6ではエディタにVSCodeが指定できるようになっています。