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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (8)
  • 关注 (0)
  • 查看 (78)

我在一个个人项目中使用了Mercurial,每次我想把东西发送到服务器上时,我都会输入我的用户名和密码。

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

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

怎样正确使用呢?

提问于
用户回答回答于

你可以在你的.hgrcMercurial.ini文件添加如下内容:

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

“bb”部分是一个任意的标识符,用于将前缀与用户名和密码匹配--便于管理不同站点(前缀)的不同用户名/密码组合。

你也只能指定用户名,然后你只需键入你的密码。

我还建议你看看keyring extension因为它将密码存储在系统的keyring中而不是纯文本文件中,所以它更安全。它与Windows上的TortoiseHg捆绑在一起,而且跨平台。

用户回答回答于

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

虽然在你的情况下可能或可能不奏效,但我发现用Putty的表演来生成公钥/私钥是有用的。

如果你还在使用bitbucket (org),它应该能够为你的用户帐户提供一个公钥,然后可以自动获取到存储库的命令。

如果在重新启动时不启动“选美”,你可以在“开始菜单”中添加“选美”的快捷方式,而快捷方式可能需要有一个“属性”,以你的私有(.ppk)文件的位置填充。

有了这个,Mercurial和你的本地存储库将需要设置为使用SSH格式进行push/pull。

下面是关于Atlassian的Windows或Mac/Linux站点的详细说明。

  1. 从开始启动PuttyGen->PuTTY->PuttyGen
  2. 生成一个新密钥并将其保存为。没有密码的PPK文件
  3. 使用Putty登录到要连接的服务器
  4. 将PuttyGen的公钥文本附加到~/的文本中。SSH/授权[医]钥匙
  5. 创建你的快捷方式。PPK文件从开始->启动到启动->启动
  6. 选择。启动菜单中的PPK快捷方式(这将在每次启动时自动发生)
  7. 看到系统托盘中的Pageant图标了吗?右击它并选择“新会话”。
  8. 在“主机名”字段中输入用户名@hostname
  9. 自动登录。
用户回答回答于

如果你正在使用TortoiseHg,你必须执行以下三个步骤,如所附屏幕快照所示,这将添加你正在使用的特定存储库的凭据。

若要添加全局设置,可以访问该文件。C:\user\user.name\merjual.ini并添加如下内容

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

用户回答回答于

在MacOSX上安装密钥环:

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--此文件与下面的文件不同。该文件驻留在用户目录下或主目录下。

myemote.xxxx=...bb.xxxx=...

这是在[auth] section/指令下的一条线,同时使用mercurial keyring扩展。确保你放置的服务器名称与你在执行“hg克隆”时使用的内容相匹配,否则keyring会说,用户未找到。下面一行中的bb或myremote,是你在执行“hg克隆http:/……”时必须给出的别名。/repo1 bb或myremote“否则,它将无法工作,或者你必须确保你的本地存储库的.hg/hgrc文件包含相同的别名(你在进行hg克隆时所提供的)。作为最后一个参数)。

例:hgrc(Linux/Unix中的用户主目录)或Windows中用户主目录下的mergusal.ini包含以下一行

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

,然后,你将不会因为每个http repo链接不止一次提示用户凭证。在~ /.hgrc 下[扩展]为“mercurial_keyring =”或“hgext”。mercurial_keyring = /path/to/your/mercurial_keyring.py”. .其中一条线应该在那里。

[auth]
myremote.schemes = http https
myremote.prefix = tshusncdurvm99/hg
myremote.username = c123456

我试图了解如何设置前缀属性,以便用户可以在没有用户名/密码提示的情况下克隆或执行任何Hg操作,而不必担心在http://...在使用Hg回购链接时使用的ServerName。它可以是IP、ServerName或服务器的FQDN

用户回答回答于

一种简单的方法是将用户名和密码添加到项目的Push url中。.hg/hgrc文件

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

(请注意,以这种方式将密码存储在纯文本中)

如果你正在处理同一域中的多个项目,则可能需要添加或重写你的~/.hgrc文件,以避免在所有项目中重复此操作:

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

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

用户回答回答于

没人提到keyring的拓展。它将用户名和密码保存到系统密钥环中,这比将密码存储在静态文件中要安全得多。你可以执行下面的步骤。

>> 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 = 
用户回答回答于

有三种方法可以做到这一点:使.hgrc文件,使用ssh或使用keyring扩展名。

1.不安全的方式--更新你的~/.hgrc文件

我是这样修改的

[ui]
username=Chris McCauley <chris.mccauley@mydomain.com>

[auth]
repo.prefix = https://server/repo_path
repo.username = username
repo.password = password

你可以通过添加更多的前缀、用户名、密码,通过在唯一标记前面加上更多的前缀、用户名、密码来配置任意数量的repos。

这只在Mercurial 1.3中有效,很明显,你的用户名和密码都是纯文本

2.安全的方法--使用ssh以避免使用密码。

Mercurial完全支持SSH,所以我们可以利用SSH无需密码登录服务器的能力-进行一次性配置以提供自生成证书。

3.keyring的拓展

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

从文档得到

该扩展提示在第一次从给定的远程存储库pull/push 中输入HTTP密码(就像默认情况下那样),将密码(由用户名和远程存储库url组合而成)保存在密码数据库中。在下一次运行时,它将检查用户名。HG/hgrc,然后在密码数据库中获取合适的密码,如果找到这些凭据,则使用这些凭据。

扫码关注云+社区