mecurial_keyring が有効な hg コマンドを常に使う話

結論

  • python2 の virtualenv を作って、そこに mercurial keyring mercurial_keyring をインストールする
  • bashrc, zshrc などに alias hg='/path/to/virtualenv/bin/hg' と設定する

mercurial_keyring について

普段 mercurial を使っている。そのときのパスワード管理には mercurial_keyring という keyring を使うようにしてくれるライブラリがある。 keyring は名前の通りパスワード管理ライブラリ。 keyring の backend はいくつか種類があるようだけど、OS X の keychain も対応している。 git の場合は git credential-osxkeychain というコマンドで keychain で管理できるけれど、それと似たようなものという認識*1

mercurial_keyring の使用方法はドキュメントにあるとおり .hgrc に以下のように設定する。 個人的には環境個別の設定は .hgrc.local というような別ファイルにして include するようにしている*2

[extensions]
mercurial_keyring =

[auth]
myremote.prefix = my.server.com/hgrepo
myremote.username = myname

経緯

python のバージョン、 mercurial のバージョン、 mercurial_keyring のバージョンが合わないと *** failed to import extension mercurial_keyring: No module named mercurial_keyring というエラーがでる。 stackoverflow.com

職場のマシンと私物のマシン、あるいはVMなどを行き来しているうちに最近は使わなくなっていた。extensions に path を指定するやりかたや mercurialmercurial_keyring のバージョンを下げて対応などしていたこともあったけれど、面倒になると多少雑な感じになってきて、直接 .hgrc に書くか毎回パスワードをいれて対応していた。特に最近は python3 を使っていることが増えてきたので、 mercurial は python3では動かないという問題もあった。あと mercurialpython 開発でなくても使うことがあるので、 virtualenv にいれたりシステムにいれたりして混在していた。

そんな感じで放置していたのだけど、今日ふと mercurial_keyring の話が出たので、そういえば、と思いついて設定してみたらあっさりできてしまった。

よく考えたら、virtualenv に python2 で mercurialmercurial_keyring をいれればよいだけだった。常にそれを参照したいなら単純にパスを指定すればよいという話だった。

わりと便利という感じ。

参考

*1:順番的には git を使う機会があった時に mercurial にもあるだろう、ということで探したのがこのライブラリを知るきっかけだった

*2: ちょっと内容が古いけどこういう設定 https://github.com/altnight/dotfiles/blob/master/.hgrc