2010-05-21 31 views
4

我在我的谷歌代码托管上使用了一些项目的Hg。对于我在.hgrc的[auth]部分设置的每个项目,都可以在不需要密码的情况下推送用户名/密码。但它有很多重复,如:mercurial:在hgrc文件中重复数量较少

[auth] 
proj1.prefix = ... 111 
proj1.username = google code username 
proj1.password = google code password 

proj2.prefix = ... 222 
proj2.username = google code username 
proj2.password = google code password 

这可以以某种方式做更少的重复?也许在hgrc中设置变量并从所有用户名/密码行中引用它?

在此先感谢您的帮助

回答

4

从hgrc auth部分:

格式:<name>.<argument> = <value>其中<name>用于组参数到验证条目。

<name>.prefix:与最长匹配前缀的认证项用于

因此,对于code.google.com单个条目应该足够了。另外感兴趣的是%include file,因此您可以将常见的东西存储在单独的文件中并将它们包含在任何hgrc中。

2

hgrc files好像不支持变量作为属性值。

你可以有多个.rc文件,为您的Mercurial配置文件thoug从一个目录

*.rc文件的读取按字母顺序排列,后来者覆盖早期的

这意味着你可以有:

  • 一个主要的hgrc文件
  • 一个模板用于项目验证的文件
  • 一个脚本能够生成多个proj.rc文件,每个项目一个。

仍有重复,但至少它是为您生成的。

+0

哪里* RC放在哪里?是不是更容易,那么只需要一个脚本来从模板生成我的.hgrc? – zaharpopov 2010-05-21 06:12:42

+0

@zaharpopov:它们是“每个安装/系统配置文件”,并且位于您告诉它们的位置(对于Windows)或位于 /etc/mercurial/hgrc.d/ * .rc中'用于Unix。您可以仅生成自己的每个用户的'.hgrc'文件,更适合用户信息。 – VonC 2010-05-21 06:23:59

0

来自同一用户的不同Google代码项目具有不同的前缀,因此您不能在hgrc的auth部分中使用prefix属性。

但你可以用不同的方式做到这一点。写〜/ .hgrc这样的:

[auth] 
gc.username = google code username 
gc.password = google code password 

然后对每一个项目,做一个PROJECTDIR/hgrc/.hgrc看起来像这样:

[paths] 
default = https://PROJECTNAME.googlecode.com/hg/ 

[auth] 
gc.username = https://PROJECTNAME.googlecode.com/hg/ 

这一点很重要的名字在.hgrc和项目hgrc之间输入(在这种情况下为gc)是相同的。

+0

他们都解析为“https:// code.google.com”,因此可以使用单个前缀 – 2013-04-29 15:34:47

1

只是

[ui] 
username = Ivan Pupkin <[email protected]> 
verbose = True 

[auth] 
googlecode.prefix = https://code.google.com/ 
googlecode.username = username 
googlecode.password = password 

我检查它汞柱2.3.2 :)