我在一个个人项目中使用Mercurial,每次我想向服务器推送一些东西时,我都要输入我的用户名和密码。
我尝试将以下内容添加到我的主目录中的.hgrc文件中,但它似乎完全被忽略了。
.hgrc
[ui] username = MY_USER_NAME password = MY_PASSWORD
如何正确地做到这一点?
< br >
适合我的格式(在我的~/。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,显然你的用户名和密码是纯文本的-不好
你可以找到有关配置无密码登录
如果您想要一个安全的选项,但又不熟悉SSH,为什么不试试这个呢?
从医生那里…
扩展在第一次拉/推时提示输入HTTP密码 到/从给定的远程存储库(就像默认情况一样),但是 保存密码(由用户名和remote组合输入) 密码数据库中的存储库url)。在下一次运行时,它会进行检查 对于。hg/hgrc中的用户名,然后在 .密码数据库,并使用这些凭证如果找到
还有更详细的信息在这里
一个简单的破解方法是将用户名和密码添加到项目.hg/hgrc文件中的推送url:
.hg/hgrc
[paths] default = http://username:password@mydomain.com/myproject
(注意,通过这种方式,您可以以纯文本的形式存储密码)
如果你在同一个域下处理多个项目,你可能想在你的~/.hgrc文件中添加重写规则,以避免对所有项目重复此操作:
~/.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/
你可以在你的.hgrc或Mercurial.ini文件中创建一个认证部分,如下所示:
Mercurial.ini
[auth] bb.prefix = https://bitbucket.org/repo/path bb.username = foo bb.password = foo_passwd
' bb '部分是一个任意标识符,用于将前缀与用户名和密码匹配-方便管理不同站点的不同用户名/密码组合(前缀)
您也可以只指定用户名,然后在按下按钮时只需输入密码。
我还建议你看一下密匙环扩展。因为它将密码存储在系统的密匙环中,而不是纯文本文件,所以更安全。它在Windows上与TortoiseHg捆绑在一起,目前正在讨论将其作为捆绑扩展分发到所有平台上。
没人提到密匙环扩展。它会将用户名和密码保存到系统密匙环中,这比上面提到的将密码存储在静态文件中要安全得多。执行下面的步骤,您就可以开始了。我用了大约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
在Mac OSX上使用MacPorts安装mercural_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 =
上面没有人向新手解释/澄清术语。他们被这些术语弄糊涂了
.hg/hgrc——此文件用于存储库,在本地/工作空间位置/实际存储库的.hg文件夹中。
~ /。HGRC——这个文件与下面的文件不同。该文件位于~或主目录。
这是[auth]节/指令下的一行,同时使用mercurial keyring扩展。确保你放在那里的服务器名称,与你在做“hg克隆”时使用的名称相匹配,否则keyring会说,用户未找到。bb或myremote在下面的行,是“别名”,你必须给,而做“hg克隆http:/…否则,它不会工作,或者你必须确保你的本地存储库的。hg/hgrc文件包含相同的别名,即(你在做hg克隆时给出的..作为最后一个参数)。
PS以下链接为清晰的细节,抱歉太快写语法。
如果在~/。hgrc (Linux/Unix中用户的主目录)或Windows中的mercury .ini在用户的主目录中,包含,下面的行,如果你做
`"hg clone http://.../.../reponame myremote"`
,那么在每个HTTP回收链接中,用户凭证的提示永远不会超过一次。在~ /。HGRC下的[扩展]一行“mercural_keyring =”或“hgeext。mercural_keyring = /path/to/your/ mercural_keyring .py" ..这里应该有一条线。
[auth] myremote.schemes = http https myremote.prefix = thsusncdnvm99/hg myremote.username = c123456
我试图找出如何设置前缀属性,以便用户可以克隆或执行任何Hg操作,没有用户名/密码提示,而不用担心他在http://..../中提到的…当使用Hg repo链接时,为服务器名。它可以是IP、服务器名或服务器的FQDN
虽然它在您的情况下可能工作,也可能不工作,但我发现使用Putty的Pageant生成公钥/私钥非常有用。
如果你也在使用bitbucket (.org),它应该能让你为你的用户帐户提供一个公钥,然后到达存储库的命令将被自动保护。
如果重新启动后Pageant没有启动,您可以在Windows“开始菜单”中添加Pageant的快捷方式,并且该快捷方式可能需要有一个“属性”,其中包含您的私人(.ppk)文件的位置。
有了这些,需要将Mercurial和本地存储库设置为使用SSH格式进行推送/拉取。
下面是Atlassian的网站上针对Windows或Mac/Linux的一些详细说明。
你不必相信我的话,毫无疑问还有其他方法可以做到这一点。也许这些步骤这里描述更适合你:
从“Start -> PuTTY-> PuttyGen . sh”开始PuttyGen 生成一个新密钥,并将其保存为.ppk文件,不带密码短语 使用“Putty”登录待连接的服务器 将PuttyGen中的公钥文本附加到~/.ssh/authorized_keys的文本中 从Start -> Putty到Start -> Startup创建。ppk文件的快捷方式 从启动菜单中选择.ppk快捷方式(这将在每次启动时自动发生) 看到系统托盘中的Pageant图标了吗?右键选择“新建会话” 在“主机名”字段中输入username@hostname 现在您将自动登录。
如果您正在使用TortoiseHg,您必须执行附件屏幕截图中显示的这三个步骤,这将为您正在使用的特定存储库添加您的凭据。
要添加全局设置,可以访问文件C: \ \ user.name \ mercurial.ini用户并添加section
[auth] bb.prefix=https://bitbucket.org/zambezia/packagemanager bb.username = $username bb.password = $password
希望这能有所帮助。