HTTPS 用户认证配置
作者: | Zachary Voase |
---|
日期: | 2009-10-01 |
---|
配置 Mercurial 以便每次凭借 HTTPS 进行 push/pull 时不再提示输入密码。
如果你将 HTTPS 作为你对一个库进行 push/pull 操作的选择,你会发觉你每次这样做时 Mercurial 都会向你寻求认证。幸运的是,这里只需在你的 ~/.hgrc
文件做一个简单的配置便可解决这个问题。
Note
这是一个 Mercurial 1.3 推出的新特性。如果你的版本比其更老你需要更新以使用此贴士!
Warning
本贴士涉及到将你的用户名与密码作为普通文本放到 ~/.hgrc
中。这通常会比下面这样做带来更多的安全问题:
- 使用 SSH 和
ssh-agent
(参见 这篇文章 ),或是 - 每次都输入你的密码
如果你不是 100% 的确认你是唯一一个能够访问你的 ~/.hgrc
的人,那就此停下。
你的 ~/.hgrc
文件中的 [auth]
段包含了 HTTP 认证需要的凭证。每一组凭证都可以任意取名;根据本贴士的目的我们假定你使用 BitBucket 托管你的代码库,所有将这组凭证叫做 bb
。
[auth]
bb.prefix = https://bitbucket.org
bb.username = {username}
bb.password = {password}
将 {username}
和 {password}
替换为你的 BitBucket 认证。
你也可以指定拥有不同 prefix 的多组认证。比如说,你有两个 BitBucket 帐号:
[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 以 http://bitbucket.org/foo/
为起始的库 push 时将会使用 ‘foo’ 帐号,’bar’ 同理。这样的话,不管怎样,你可以利用这一情况让 Mercurial 始终选择与指定 prefix 最匹配的那组认证。因此,假设你有如下配置:
[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’ 更准确。
最后,你可以告诉 Mercurial 一个 prefix 能够 同时 匹配 HTTP 与 HTTPS,通过去掉 prefix 字段的协议部分并添加一个 schemes
字段到认证中:
[auth]
bb.prefix = bitbucket.org
bb.username = foo
bb.password = foo_passwd
bb.schemes = http https
想要了解更多的信息,请查阅 hgrc 的 auth 文档 。