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 を指定するやりかたや mercurial
と mercurial_keyring
のバージョンを下げて対応などしていたこともあったけれど、面倒になると多少雑な感じになってきて、直接 .hgrc に書くか毎回パスワードをいれて対応していた。特に最近は python3 を使っていることが増えてきたので、 mercurial
は python3では動かないという問題もあった。あと mercurial
は python 開発でなくても使うことがあるので、 virtualenv にいれたりシステムにいれたりして混在していた。
そんな感じで放置していたのだけど、今日ふと mercurial_keyring
の話が出たので、そういえば、と思いついて設定してみたらあっさりできてしまった。
よく考えたら、virtualenv に python2 で mercurial
と mercurial_keyring
をいれればよいだけだった。常にそれを参照したいなら単純にパスを指定すればよいという話だった。
わりと便利という感じ。
参考
*1:順番的には git を使う機会があった時に mercurial にもあるだろう、ということで探したのがこのライブラリを知るきっかけだった
*2: ちょっと内容が古いけどこういう設定 https://github.com/altnight/dotfiles/blob/master/.hgrc