让TorhoiseHg记住密码

来源:互联网 发布:mac怎么修改文件名 编辑:程序博客网 时间:2024/05/20 19:16

在使用TortoiseHg的过程中,无论是pull还是push,每次都要输入用户名和密码,是不是很麻烦呢?没关系,把用户名和密码保存在配置文件中,就方便多了。


加密方式 (最有效的方式)

以上方法提供的方式都是将密码以非加密方式保存,安全性比较低,还好,自从TortoiseHg 0.10,就提供了一个mercurial-keyring扩展,可以将密码以加密方式保存在一个密码数据库中。

而我们要做的唯一一步操作,就是启用这个扩展。方法如下,只要在配置文件中(如果想让这个扩展只对某一个代码库生效,就修改相应目录下.hg的hgrc文件,若要使扩展对所有代码库都生效就找到mercurial.ini文件)加入以下字符串:

[extensions]mercurial_keyring=
当然也可以在TortoiseHg >仓库设置/全局设置> 扩展中,选择mercurial_keyring来实现。

因为是启用扩展,因此TortoiseHg软件需要重启,还好这一切都是他自己自动完成的。

通过以上操作,然后按照第一种方法中介绍的去配置hgrc文件,记住,不需要再在文件中指定密码,但是必须有用户名信息(在auth或者path中设置用户名均可)。这样,在第一次同步时,要求输入密码,以后就不再需要输入了,这个密码会将以加密方式进行保存,这大大提高密码安全性。另外,如果密码更改了,这个扩展还会弹出输入密码的框从而更新密码信息,而上面的配置修改方式,如果设置的密码错误,则只会报错不会要求更新。

 




版本服务器信息如下:
项目名称:test
项目版本服务器地址:https://222.197.181.19/repos/test
用户名:xhome_username
密码:xhome_password

在配置文件中加入如下配置:
[auth]
test.prefix=https://222.197.181.19/repos/test
test.username=xhome_username
test.password=xhome_password

注意:[auth]只能出现一次,如果需要在全局配置中加入多个项目的配置,继续在[auth]下面添加即可

如果想应用与全局,则将上诉配置加入mercurial.ini文件中(在用户主目录下);如果只是应用于某个文件夹,则在改目录下的.hg\hgrc文件中加入上诉配置即可

当然,也可以在workbench中进入设置,编辑相应的配置文件


TortoiseHg是一个跨平台的Mercurial分布式版本控制系统的可视化客户端工具,如果使用https协议与服务器进行代码同步时是要求输入密码的,这比较烦人。这里根据用户对密码保存安全性的不同要求,总结了几种方法,以便在同步时不需要输入密码信息。以下均以TortoiseHg 2.0中文版为例。

1.非加密方式

非加密方式就是将同步密码直接置于配置文件中,这种方式设置快速,但是不利于密码的安全,有如下几种设置方式:

(1)第一次克隆时设置

当需要在一个文件夹中第一次克隆服务器的代码时,在如下界面中的“源”地址中,包含用户名和密码即可:

截图01

其中username和password分别替换成实际的用户名和密码即可。

(2)在配置文件中设置

实际上上面的方法设置后,这些字符串保存在了配置文件中,如果第一次没有如上的输入密码信息,也可以通过之后修改配置文件来达到目的。这个配置文件在目标文件夹中.hg文件夹中叫做hgrc的文件(类似于asp.net中web.config,每个克隆的代码库,都有一个hgrc文件,它的设置只对于当前代码库有效),用文本打开即可显示配置信息(可以通过在文件夹中右键-TortoiseHg-仓库设置,然后选择右上角的“编辑文件”按钮打开):

截图01

上面paths分支下的default就是我们上面(1)中设置的“源”,如果之前没有设置,随时都可以在这里加入用户名和密码信息。

另外,如果TortoiseHg基于的Mercurial版本是1.3及其以上(TortoiseHg 2.0基于Mercurial 1.8,因此可以),上面的配置文件也可以如下方式配置:

截图02

也就是将同步的用户名和密码信息放在auth节中。要注意,auth中三行一个也不能少,第一行是同步的url前缀信息,第二行用户名,第三行密码,其中的xxx,可是是任意合法的字符串,只要保证三行的xxx一样即可。虽然auth和paths中的prefix和default看似有些重复,但是一个也不能少。

可以这样翻译auth段:在当前代码库中,所有以http://bitbucket.org开头的url(记为xxx)同步时,都是用username作为用户名,password作为密码。

注意:虽然是明文在配置文件中保存了密码,但是在workbench中这些密码将会是星号方式显示,但有一个例外,也是一个bug,即如果密码中包含@字符,那么密码中从这个字符@开始一直到结束,都将不幸的显示在workbench中,不仅暴露部分密码,而且会导致同步的url被解析错误而无法同步。

截图00

如图可以看出,如果密码是pass@word,那么'@word’将被会明文显示出来,而@前面的pass还是正常的星号显示,这主要是因为密码中的@被解析为'用户名:密码@url’中的那个@了,也就是对整个url进行了不正确的分割。因此如果密码是这种情况,这样设置密码的方式就无效了。

(3)全局设置

上面已经看到,对每一个代码库,如果都将用户和密码信息放在hgrc中,那么密码将分布在很多地方,安全性是最低的。还好,TortoiseHg提供了一个全局设置,类似于asp.net的machine.config文件,对于所有代码库,都生效,这个文件在windows系统中,一般是mercurial.ini文件(可以通过在文件夹中右键-TortoiseHg-全局设置,然后选择右上角的“编辑文件”按钮打开)

Hg全局配置文件位置

  • 在XP 中一般是:C:\Documents and Settings\Administrator\mercurial.ini

  • 在Windows 其它版本中,一般自动生成在你的用户文档目录中:C:\Documents and Settings\{用户名}\mercurial.ini

可以用如下类似方式配置:

截图01

翻译过来的意思就是说:以后凡是本机中代码库中url以https://bitbucket.org/foo/开头的,都用foo和foo_passwd分别作为用户名和密码,凡是以https://bitbucket.org/bar/开头的,都用bar和bar_passwd作为用户名和密码。

通过这种方式,将所有密码信息都保存在一个文件中了,减少了密码配置的工作量。配置的详细信息还可以参考《Configuring User Auth for HTTPS》。

备注1:以上所涉及的配置文件,都不会随着同步操作被传送出去,因此里面的配置信息(尤其是密码)相对外界是是安全的,上述所指的不安全,是基于本地计算机而言。

备注2:TortoiseHg是Mercurial的一个优秀的gui客户端,以上介绍均基于TortoiseHg的,有些可以手动修改配置文件,而有些直接就可以在gui界面中实现。如果直接使用Mercurial,可能配置过程不同,会在命令模式下,并且一些扩展是需要手动安装然后启用的,可以查询相关资料进行配置。

备注3:实际上,Mercurial 完全支持SSH 来进行同步,而不需要提供密码,这大大提高了安全性,不过还是需要一些其他配置,不在本文介绍范围,可以参考《Using SSH to Access your Bitbucket Repository》


原创粉丝点击