如何使用Mercurial保存用户名和密码?

我在一个个人项目中使用了Mercurial,每次我想把一些东西推给服务器时,我一直在input用户名和密码。

我尝试将以下内容添加到我的主目录中的.hgrc文件,但似乎完全忽略了它。

 [ui] username = MY_USER_NAME password = MY_PASSWORD 

如何以正确的方式做到这一点?

您可以在.hgrcMercurial.ini文件中创buildauth部分,如下所示:

 [auth] bb.prefix = https://bitbucket.org/foo/ bb.username = foo bb.password = foo_passwd 

'bb'部分是一个任意的标识符,用于匹配前缀与用户名和密码 – 方便pipe理不同的用户名/密码组合与不同的网站(前缀)

您也可以只指定用户名,那么当您推送时您只需input您的密码。

有关更多详细信息,请参阅: http : //hgtip.com/tips/advanced/2009-10-01-configuring-user-auth-https/

我也build议看看钥匙圈的延伸 。 因为它将密码存储在系统的密钥环中,而不是纯文本文件,所以它更安全。 它与Windows上的TortoiseHg捆绑在一起,目前有关于在所有平台上将其作为捆绑扩展进行分发的讨论。

有三种方法可以这样做:使用.hgrc文件,使用ssh或使用密钥环扩展

1. INSECURE方式 – 更新你的〜/ .hgrc文件

适用于我的格式(在我的〜/ .hgrc文件中)是这样的

 [ui] username=Chris McCauley <chris.mccauley@mydomain.com> [auth] repo.prefix = https://server/repo_path repo.username = username repo.password = password 

您可以根据需要configuration尽可能多的回购,通过添加更多前缀,用户名,密码的三元组,通过添加一个唯一的标签。

这只适用于Mercurial 1.3,显然你的用户名和密码是纯文本 – 不好。

2.安全的方式 – 使用SSH来AVOID使用密码

Mercurial完全支持SSH,所以我们可以利用SSH的能力login到一个服务器没有密码 – 你做一次性configuration提供一个自我生成的证书。 这是迄今为止最安全的方式来做你想做的事情。

您可以在这里find更多关于configuration无密码login的信息

3.钥匙圈扩展

如果你想要一个安全的选项,但不熟悉SSH,为什么不尝试呢?

从文档…

该扩展会在第一次从给定的远程存储库中拉出/推送时提示inputHTTP密码(就像默认情况下那样),但是会在密码数据库中保存密码(用户名和远程存储库url的组合)。 在下一次运行时,它会检查.hg / hgrc中的用户名,然后在密码数据库中input合适的密码,如果find则使用这些凭据。

这里有更详细的信息

没有人提到钥匙圈的延伸。 它会将用户名和密码保存到系统密钥环中,这比将密码存储在静态文件中要安全得多,如上所述。 执行下面的步骤,你应该很好去。 我在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

一个简单的方法就是在项目的.hg/hgrc文件中的推送url中添加用户名和密码:

 [paths] default = http://username:password@mydomain.com/myproject 

(请注意,这样以纯文本forms存储密码)

如果您正在同一个域下的多个项目中工作,则可能需要在~/.hgrc文件中添加一个重写规则,以避免在所有项目中重复这个规则:

 [rewrite] http.//mydomain.com = http://username:password@mydomain.com 

同样,由于密码以纯文本forms存储,我通常只存储我的用户名。

如果您正在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]部分/指令下的行之一,而使用mercurial keyring扩展。 确保你放在那里的服务器名称与你在使用“hg clone”时所用的名称相匹配,否则keyring会说没有find用户。 bb或myremote,在“hg clone http:/…/../ repo1 bb or myremote”时必须给出“别名”,否则它不会工作,或者你必须确保你的本地存储库的.hg / hgrc文件包含相同的别名,即(你在做hg clone ..时给的最后一个参数)。

PS清楚的细节以下链接,抱歉,快速书写语法。

例如:如果在〜/ .hgrc(在Linux / Unix中是用户的主目录)或者在用户主目录的Windows中的mercurial.ini中包含,则包含以下行

 `"hg clone http://.../.../reponame myremote"` 

,那么您将永远不会提示每个http repo链接提供超过一次的用户凭据。 在〜/ .hgrc下的[extensions]下面有一行“mercurial_keyring =”或者“hgext.mercurial_keyring = /path/to/your/mercurial_keyring.py”。其中一行应该在那里。

 [auth] myremote.schemes = http https myremote.prefix = tshusncdurvm99/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 = 

如果您使用的是TortoiseHg,则必须执行附加屏幕截图中显示的这三个步骤,这将为您正在使用的特定存储库添加凭据。

在这里输入图像描述

要添加全局设置,您可以访问文件C:\ users \ user.name \ mercurial.ini并添加该部分

 [auth] bb.prefix=https://bitbucket.org/zambezia/packagemanager bb.username = $username bb.password = $password 

希望这可以帮助。

虽然它可能会或可能不会在你的情况下工作,但我发现使用Putty的Pageant生成一个公钥/私钥是有用的。

如果你还在使用bitbucket(.org),它应该能够为你的用户账号提供一个公钥,然后自动保护到达版本库的命令。

如果重新启动时,Pageant没有为您启动,您可以将一个快捷方式添加到您的Windows“开始菜单”,该快捷方式可能需要有一个“属性”填充您的私人(.ppk)文件的位置。

有了这个Mercurial和您的本地存储库将需要设置为推/拉使用SSH格式。

以下是关于Windows或Mac / Linux的Atlassian网站的一些详细说明。

你不必接受我的话,毫无疑问还有其他方法可以做到这一点。 也许这里描述的这些步骤更适合你:

  1. 从Start – > PuTTY-> PuttyGen启动PuttyGen
  2. 生成一个新的密钥,并保存为.ppk文件没有密码
  3. 使用腻子login到您要连接的服务器
  4. 将PuttyGen中的公钥文本附加到〜/ .ssh / authorized_keys的文本中
  5. 从开始 – >腻子到开始 – >启动创build一个快捷方式到您的.ppk文件
  6. 从“启动”菜单中select.ppk快捷方式(这将在每次启动时自动发生)
  7. 看到系统托盘中的选美图标? 右键单击它并select“新build会话”
  8. 在“主机名”字段中input用户名@主机名
  9. 您现在将自动login。