HTTPS ユーザー認証の設定
posted by Zachary Voase on October 1, 2009
リポジトリへ push/pull する手段として HTTPS を選んだ場合、
毎回 Mercurial がパスワードを尋ねることに気づくでしょう。
幸い、 ~/.hgrc にちょっと設定を加えると、 この挙動を回避できます。
注: これは Mercurial 1.3 で導入された新機能です。 以前のバージョンを使っている場合、この tip のためにアップデートが必要です!
注: この tip では、ユーザー名とパスワードをそのまま ~/.hgrc に保存してしまいます。 たいてい次の方法のほうがずっと安全です:
- SSH で
ssh-agentを使う (この記事 を参照) - パスワードを毎回入力する
~/.hgrc に自分以外は 100% アクセスできないという自信がなければ、 ここでやめてください。
HTTP 認証の設定は、 ~/.hgrc ファイルの [auth] セクションで行います。
ユーザー名とパスワードのペアは、任意の名前で指定します。
この tip では、 BitBucket でリポジトリをホストしていると仮定し、
このペアを bb と呼ぶことにします。
[auth]
bb.prefix = https://bitbucket.org
bb.username = {username}
bb.password = {password}
{username} と {password} は、自分の BitBucket のアカウントで置き換えましょう。
複数のユーザー名・パスワードを指定する場合は、プレフィックスを分けます。 例えば、 BitBucket のアカウントが 2 つあれば:
[auth]
bb1.prefix = https://bitbucket.org/foo/
bb1.username = foo
bb1.password = foo_passwd
bb2.prefix = https://bitbucket.org/bar/
bb2.username = bar
bb2.password = bar_passwd
URI が https://bitbucket.org/foo/ で始まるリポジトリへ push する時は、
‘foo’ アカウントが使われます。 ‘bar’ についても同様です。けれど、この場合は、
マッチしたプレフィックスの中で最も細かい設定を Mercurial が選択する点を利用しない手はありません。つまり、次のような設定では:
[auth]
bb1.prefix = https://bitbucket.org/
bb1.username = foo
bb1.password = foo_passwd
bb2.prefix = https://bitbucket.org/bar/
bb2.username = bar
bb2.password = bar_passwd
/bar/ 以外のリポジトリには ‘foo’ アカウントが使われます。唯一マッチするプレフィックスだからです。
一方 /bar/ リポジトリについては、両方のプレフィックスがマッチしますが、 ‘bar’
のほうが細かいため ‘bar’ アカウントが有効です。
最後に、 HTTP と HTTPS の 両方 にマッチさせる方法を紹介しましょう。
プレフィックスからスキームの部分を取り除いて、
代わりに scheme セクションを追加します:
[auth]
bb.prefix = bitbucket.org
bb.username = foo
bb.password = foo_passwd
bb.schemes = http https
詳細については hgrc auth ドキュメント を参照してください。