使用字符串中的参数从Powershell调用hg

时间:2016-04-28 10:33:57

标签: powershell mercurial

我正在尝试使用Powershell为Mercurial自动化一些东西。

这与我如何调用“hg.exe”而不是Mercurial本身有关,但是我无法使其正常工作。

我想用Powershell中运行时构造的一些参数执行hg clone。到目前为止,我这样做:

$SourceRepo = "http://some.url.com/where.i.have.a.repo"
$TargetRepo = "d:\path\to\local\copy"
hg clone $SourceRepo $TargetRepo

问题是,http://some.url.com需要身份验证。运行脚本时,我会询问用户的用户名和密码。假设我将它们分别存储在$Username$Password中。

我可以使用--config将身份验证数据传递给Mercurial。然后我构建一个像这样的字符串

$hgAuth = "--config auth.x.prefix=* --config auth.x.username=$Username --config auth.x.password=$Password --config auth.x.schemes=http

所以我这样称呼我的脚本:

hg clone $SourceRepo $TargetRepo $hgAuth

但Mercurial因错误而中止,并说:

hg : hg clone: option --config auth.x.prefix not recognized

如果我不使用这些变量,而是在powershell中使用与纯文本相同的相同命令并运行它,它将按预期工作。

所以我想我必须有一种不同的方式将参数传递给hg。我无法弄清楚我做错了什么。

1 个答案:

答案 0 :(得分:1)

正如上面的评论中所指出的,我不得不将其拆分为数组。

@PetSerAl:我不知道为什么你没有将它作为答案发布,所以我会在这里发布一个。

这样做的时候会这样:

$ python foo.py
<class 'bar.FnordError'>
FnordError('message',)
bar
FnordError
message
this is what I want: 'bar.FnordError: message'

<class 'ValueError'>
ValueError('message',)
builtins
ValueError
this is what I want: 'ValueError: message'