Source

hgtip-content-ja / advanced / 2009-10-01-configuring-user-auth-https.html

Full commit
{% extends "_tip.html" %}
{%hyde
    title: HTTPS ユーザー認証の設定
    author_name: Zachary Voase
    author_link: http://zacharyvoase.com/
    created: 2009-10-01
%}


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


{% block tip %}

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

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

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

* SSH で `ssh-agent` を使う ([この記事][gg-ssh] を参照)
* パスワードを毎回入力する

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

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

[`~/.hgrc` に以下を追加してください]({{ links.tip_edit_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

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` ドキュメント][hgrc-auth-docs]
を参照してください。

[gg-ssh]: http://github.com/guides/how-to-not-have-to-type-your-password-for-every-push
[hgrc-auth-docs]: http://www.selenic.com/mercurial/hgrc.5.html#auth

{% endblock %}