7

我正在使用mercurial 密钥环扩展将密码存储到我在 BitBucket 上的远程存储库中,因此我不必每次推送到远程存储库时都输入它。具有讽刺意味的是,每次我需要访问它时,它都会询问我解锁钥匙圈的密码。从而完全减轻了它对我的目的。我究竟做错了什么?

在我的全局 mercurial 配置(~/.hgrc)中,我有以下几行:

[extensions]
hgext.mercurial_keyring = /etc/mercurial/mercurial_keyring.py

在我的 repo mercurial 配置(.hg/hgrc)中,我有:

[paths]
default = https://username@bitbucket.org/username/repo

例子:

> hg out
> comparing with https://username@bitbucket.org/username/repo
> Please enter password for encrypted keyring:

我已尝试卸载密钥环并重试。我也玩过我在网上找到的配置设置,但无济于事。我也找不到关于 mercurial 的加密密钥环和非加密密钥环的任何内容。

如何获取它,以便在对远程仓库执行操作时根本不必输入密码?

4

2 回答 2

0

我不知道在提出问题时是否已经存在这种情况,但现在解决方案已在您问题的密钥环扩展 wiki 链接中直接解释。

仅启用密钥环扩展是不够的,您还需要告诉 Mercurial 远程仓库和配置文件中的用户名。

引用链接:

3.2. 存储库配置 (HTTP)

编辑 repository-local.hg/hgrc并将远程存储库路径和用户名保存在那里,但不要保存密码。例如:

[paths] 
myremote = https://my.server.com/hgrepo/someproject

[auth] 
myremote.schemes = http https 
myremote.prefix = my.server.com/hgrepo
myremote.username = mekk

也可以使用带有 url 嵌入名称的更简单的形式:

[paths]
bitbucket = https://User@bitbucket.org/User/project_name/

注意:如果用户名和密码都在 中给出.hg/hgrc,扩展将使用它们而不使用密码数据库。如果没有给出用户名,分机每次都会提示输入凭据,同样不保存密码。因此,在这两种情况下,它都有效地恢复到默认行为。


请注意,您不需要指定这些示例中显示的所有信息。

在我的机器上(Windows 上的 Mercurial 5.0.2),我使用了一种更简单的形式,它也适用于多个存储库。
这是我实际配置文件的 1:1 副本:

[extensions]
mercurial_keyring = 

[auth]
bb.prefix = https://bitbucket.org/
bb.username = christianspecht

这使用密钥环扩展来保存用户的密码christianspecht,用于所有 URL 以https://bitbucket.org/.

前缀bb可以自由选择,因此您可以使用它一次保存多个 URL/用户名。

这工作得非常好(至少在 Bitbucket 在几周内放弃 Mercurial 支持之前......) - 它要求输入密码一次,然后自动保存,并且不再要求。

于 2020-04-24T19:28:19.043 回答
-1

它要求我输入解锁钥匙圈的密码。我究竟做错了什么?

没有什么。阅读密钥环文档,访问密钥 环的密码必须为会话提供一次

于 2014-12-18T19:32:54.567 回答