Answers:
你可以让一个auth部分的.hgrc
或Mercurial.ini
文件,如下所示:
[auth]
bb.prefix = https://bitbucket.org/repo/path
bb.username = foo
bb.password = foo_passwd
“ bb”部分是一个任意标识符,用于将前缀与用户名和密码匹配-方便用于管理具有不同站点的不同用户名/密码组合(前缀)
您也只能指定用户名,然后在按下时仅需输入密码即可。
我也建议您看看钥匙圈扩展。由于它将密码存储在系统的钥匙圈中而不是纯文本文件中,因此更加安全。它与Windows上的TortoiseHg捆绑在一起,目前正在讨论将其作为捆绑的扩展分发到所有平台上。
适用于我的格式(在我的〜/ .hgrc文件中)是
[ui]
username=Chris McCauley <chris.mccauley@mydomain.com>
[auth]
repo.prefix = https://server/repo_path
repo.username = username
repo.password = password
您可以根据需要配置任意数量的回购协议,方法是在前缀之前添加一个三元组,前缀,用户名和密码。
这仅在Mercurial 1.3中有效,并且显然您的用户名和密码为纯文本格式-不好。
Mercurial完全支持SSH,因此我们可以利用SSH无需密码即可登录服务器的功能 -您只需进行一次配置即可提供自生成的证书。到目前为止,这是做您想要的事的最安全的方法。
如果您想要一个安全的选项,但对SSH不熟悉,为什么不试试呢?
从文档...
该扩展程序在第一次拉入/从给定的远程存储库中拉入/推送时提示输入HTTP密码(就像默认情况下一样),但是将密码(由用户名和远程存储库URL组合键)保存在密码数据库中。在下一次运行时,它将检查.hg / hgrc中的用户名,然后在密码数据库中检查适当的密码,并使用这些凭据(如果找到)。
还有更详细的信息在这里
没有人提到钥匙圈扩展。它将用户名和密码保存到系统密钥环中,这比如上所述将密码存储在静态文件中要安全得多。执行以下步骤,您应该一切顺利。我花了大约2分钟在Ubuntu上启动并运行它。
>> sudo apt-get install python-pip
>> sudo pip install keyring
>> sudo pip install mercurial_keyring
**Edit your .hgrc file to include the extension**
[extensions]
mercurial_keyring =
一个简单的技巧是在项目.hg/hgrc
文件的推送URL中添加用户名和密码:
[paths]
default = http://username:password@mydomain.com/myproject
(请注意,通过这种方式,密码以纯文本格式存储)
如果您正在同一域下的多个项目上工作,则可能需要在文件中添加重写规则~/.hgrc
,以避免对所有项目重复此操作:
[rewrite]
http.//mydomain.com = http://username:password@mydomain.com
同样,由于密码以纯文本格式存储,因此我通常只存储我的用户名。
如果您在Gnome下工作,我将在此处解释如何集成Mercurial和Gnome Keyring:
http://aloiroberto.wordpress.com/2009/09/16/mercurial-gnome-keyring-integration/
上面的NOBODY向新手用户解释/阐明了术语。他们对条款感到困惑
.hg / hgrc-此文件用于存储库,位于本地/工作空间位置/实际存储库的.hg文件夹中。
〜/ .hgrc-此文件与下面的文件不同。该文件位于〜或主目录中。
myremote.xxxx = ..... bb.xxxx = ......
这是使用授权密钥环扩展名时[auth]节/指令下的行之一。确保您放置在此处的服务器名称与您在执行“ hg clone”时使用的服务器名称匹配,否则密钥环将显示“找不到用户”。bb或myremote是下面的行中的别名,是您在执行“ hg clone http:/.../../ repo1 bb或myremote”时必须提供的“别名”,否则它将无法正常工作,或者您必须确保本地仓库的.hg / hgrc文件包含相同的别名,即(您在进行hg clone ..时作为最后一个参数给出的别名)。
PS下面的链接提供了清晰的详细信息,对于快速编写语法感到抱歉。
例如:如果在〜/ .hgrc(Linux / Unix中的用户主目录)或Windows中用户主目录中的mercurial.ini包含以下行,并且
`"hg clone http://.../.../reponame myremote"`
,那么每个http repo链接都不会多次提示您输入用户凭据。在[/ extensions]下的〜/ .hgrc中,有一行“ mercurial_keyring =”或“ hgext.mercurial_keyring = /path/to/your/mercurial_keyring.py” ..其中应有一行。
[auth]
myremote.schemes = http https
myremote.prefix = thsusncdnvm99/hg
myremote.username = c123456
我试图找出如何设置PREFIX属性的方法,以便用户可以在没有用户名/密码提示的情况下克隆或执行任何汞操作,而不必担心他在http:// .... / ...中提到的内容使用汞回购链接时的服务器名称。它可以是IP,服务器名称或服务器的FQDN
使用MacPorts在Mac OSX上安装mercurial_keyring:
sudo port install py-keyring
sudo port install py-mercurial_keyring
将以下内容添加到〜/ .hgrc中:
# Add your username if you haven't already done so.
[ui]
username = email@address.com
[extensions]
mercurial_keyring =
尽管在您的情况下它可能起作用也可能不起作用,但我发现使用Putty的Pageant生成公共/私有密钥很有用。
如果您还使用bitbucket(.org),它应该使您能够为用户帐户提供公钥,然后自动保护到达存储库的命令。
如果Pageant在重启后没有为您启动,则可以将Pageant的快捷方式添加到Windows的“开始”菜单中,并且该快捷方式可能需要在“属性”中填充您的私有(.ppk)文件的位置。
通过此操作,需要将Mercurial和您的本地存储库设置为使用SSH格式进行推/拉。
这是Atlassian的Windows或Mac / Linux网站上的一些详细说明。
您不必相信我的话,毫无疑问,还有其他方法可以做到。也许这里描述的这些步骤更适合您:
- 从开始-> PuTTY-> PuttyGen启动PuttyGen
- 生成一个新密钥并将其另存为.ppk文件而无需密码
- 使用Putty登录要连接的服务器
- 将PuttyGen中的公钥文本追加到〜/ .ssh / authorized_keys的文本中
- 创建一个.ppk文件的快捷方式,从开始-> Putty到开始->启动
- 从“启动”菜单中选择.ppk快捷方式(这将在每次启动时自动发生)
- 看到系统托盘中的Pageant图标吗?右键单击它,然后选择“新会话”
- 在“主机名”字段中输入username @ hostname
- 您现在将自动登录。