HTTPS ユーザー認証の設定

posted by Zachary Voase on October 1, 2009

リポジトリへ push/pull する手段として HTTPS を選んだ場合、 毎回 Mercurial がパスワードを尋ねることに気づくでしょう。 幸い、 ~/.hgrc にちょっと設定を加えると、 この挙動を回避できます。

: これは Mercurial 1.3 で導入された新機能です。 以前のバージョンを使っている場合、この tip のためにアップデートが必要です!

: この tip では、ユーザー名とパスワードをそのまま ~/.hgrc に保存してしまいます。 たいてい次の方法のほうがずっと安全です:

~/.hgrc に自分以外は 100% アクセスできないという自信がなければ、 ここでやめてください。

HTTP 認証の設定は、 ~/.hgrc ファイルの [auth] セクションで行います。 ユーザー名とパスワードのペアは、任意の名前で指定します。 この tip では、 BitBucket でリポジトリをホストしていると仮定し、 このペアを bb と呼ぶことにします。

~/.hgrc に以下を追加してください:

[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

URIhttps://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’ アカウントが有効です。

最後に、 HTTPHTTPS両方 にマッチさせる方法を紹介しましょう。 プレフィックスからスキームの部分を取り除いて、 代わりに scheme セクションを追加します:

[auth]
bb.prefix = bitbucket.org
bb.username = foo
bb.password = foo_passwd
bb.schemes = http https

詳細については hgrc auth ドキュメント を参照してください。

HTTPS 経由の push/pull で、毎回パスワードを入力しなくていいように Mercurial を設定しよう。