前口上
MicrosoftがGitHubを買収しました。GitLabやbitbucketへの乗り換えの動きもあるようです。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のリポジトリに対して,clone
,incoming
,push
,pull
などが行えるようになるはずです。
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が指定できるようになっています。