我在个人项目中使用了Mercurial,每次我想将某些东西推送到服务器时,我一直在输入我的用户名和密码.
我尝试将以下内容添加到.hgrc
我的主目录中的文件中,但它似乎完全被忽略了.
[ui] username = MY_USER_NAME password = MY_PASSWORD
如何以正确的方式做到这一点?
你可以让一个auth部分的.hgrc
或Mercurial.ini
文件,如下所示:
[auth] bb.prefix = https://bitbucket.org/repo/path bb.username = foo bb.password = foo_passwd
'bb'部分是一个任意标识符,用于将前缀与用户名和密码相匹配 - 方便管理不同站点的不同用户名/密码组合(前缀)
您也可以只指定用户名,然后只需在推送时输入密码.
有关详细信息,请参阅:http://hgtip.com/tips/advanced/2009-10-01-configuring-user-auth-https/
我还建议看看密钥环扩展.因为它将密码存储在系统的密钥环而不是纯文本文件中,所以它更安全.它与Windows上的TortoiseHg捆绑在一起,目前正在讨论如何在所有平台上将其作为捆绑扩展分发.
适用于我的格式(在我的〜/ .hgrc文件中)就是这样
[ui] username=Chris McCauley[auth] repo.prefix = https://server/repo_path repo.username = username repo.password = password
您可以通过添加唯一标记来添加更多三元组的前缀,用户名和密码,从而配置任意数量的repos.
这仅适用于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 =
https://www.mercurial-scm.org/wiki/KeyringExtension
一个简单的hack是在项目.hg/hgrc
文件的push 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] section/directive下的一行,同时使用mercurial keyring扩展.确保你放在那里的服务器名称,与你在做"hg clone"时使用的服务器名称匹配,否则密钥环会说,用户找不到.在下面的行中的bb或myremote是你在做"hg clone http:/.../../ repo1 bb或myremote"时必须给出的"别名",否则它不会工作或你必须确保你的本地repository的.hg/hgrc文件包含相同的别名,即(你在做hg clone时给出的...作为最后一个参数).
PS以下链接的详细信息,对不起快速书面语法.
/sf/ask/17360801/#14269997
http://www.linuxquestions.org/questions/showthread.php?p=4867412#post4867412
/sf/ask/17360801/#14270602
OpenSUSE Apache - Windows LDAP - 组用户身份验证 - Mercurial
例如:如果在〜/ .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属性,以便用户可以在没有用户名/密码提示的情况下克隆或执行任何Hg操作,而无需担心他在http:// ..../...中提到的内容使用Hg repo链接时的servername.它可以是IP,服务器名称或服务器的FQDN