2016-04-28 13 views
1

私はPowerShellでMercurialのいくつかのものを自動化しようとしています。Powershellのhgを文字列の引数で呼び出す

これは、Mercurial自体ではなく「hg.exe」と呼ばれる方法で問題になりましたが、動作させることができません。

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

'$ hgAuth = "--config"、 "auth.x.prefix = *"、 "--config"、「auth.x.username = $ config "、" auth.x.schemes = http "' – PetSerAl

+0

これは動作しました。素晴らしい。ありがとうございました。 – Hemisphera

+0

これを実行すると、powershellはユーザ名/パスを待っているかのようにハングアップしますが、形や形はこれを示しません – ozzy432836

答えて

1

上記のコメントで指摘したように、私はそれを配列に分割しなければなりませんでした。

@PetSerAl:なぜあなたは答えとして投稿しなかったのか分かりませんので、私は自分自身として投稿します。

次のように行われたときにそれが動作

$hgAuth = "--config", "auth.x.prefix=*", "--config", "auth.x.username=$Username", "--config", "auth.x.password=$Password", "--config", "auth.x.schemes=http" 
関連する問題