MacでMercurialのHTTPS認証のパスワードをキーチェーンに保存する

いちいちuser/passを入力するのが面倒。

一つの方法として~/.hgrcにuser/passを書いてしまう手がある。

[auth]
er.prefix = https://example.repository.com
er.username = {username}
er.password = {password}

ただし平文でパスワードを書くことになる



別の方法としてmercurial_keyringを使う方法がある。
これならパスワードはキーチェーンに保存される。


mercurialで使っているpythonを確認する

$ head -n1 `which hg`
#!/usr/bin/python


easy_installかpipでkeyringをインストールする。

keyring 3.3 : Python Package Index

pip install keyring


mercurial_keyringをダウンロードする。pip installでもいいはず。

KeyringExtension - Mercurial

https://bitbucket.org/Mekk/mercurial_keyring/raw/default/mercurial_keyring.py


~/.hgrcにmercurial_keyringを設定

[extensions]
# ダウンロードした場合
mercurial_keyring = /path/to/mercurial_keyring.py

# pip installした場合
mercurial_keyring = 

最後に、リモートからチェックアウトしたリポジトリの.hg/hgrcにユーザー名などを設定する。

{project}/.hg/hgrc

[paths]
default = https://example.repository.com/repo/awesome_project

[auth]
default.schemes = https
default.prefix = example.repository.com/repo
default.username = ***********


一回目のhg pull/pushではパスワードを聞かれる

$  hg pull
http authorization required
realm: Redmine Mercurial
user: *********** (fixed in .hg/hgrc)

2度目から聞かれなくなる


キーチェーンの分類「パスワード」を見てみるとMercurialという名前でパスワードが保存されているのがわかる