2016-04-28 16 views
1

Ich versuche, einige Sachen für Mercurial mit Powershell zu automatisieren.Aufruf von hg aus Powershell mit Argumenten in String

Dies muss ein Problem sein mit, wie ich "hg.exe" und nicht mit Mercurial selbst aufrufen, aber ich kann es nicht funktionieren.

Ich möchte eine hg clone mit einigen Parametern ausführen, die ich zur Laufzeit in Powershell konstruiere. Bisher habe ich dies tue:

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

Das Problem ist, dass http://some.url.com Authentifizierung erfordert. Beim Ausführen des Skripts frage ich den Benutzer nach Benutzername und Passwort. Angenommen, ich habe sie in $Username bzw. $Password gespeichert.

Ich kann Authentifizierungsdaten mit --config an Mercurial übergeben. Ich baue dann eine Zeichenfolge wie so

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

Und so nenne ich mein Skript wie folgt:

hg clone $SourceRepo $TargetRepo $hgAuth 

Aber Mercurial bricht mit einem Fehler, zu sagen:

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

Wenn ich nicht Verwenden Sie diese Variablen, aber schreiben Sie den gleichen identischen Befehl in Powershell als Nur-Text und führen Sie es aus, es funktioniert wie erwartet.

Also ich denke, dass es eine andere Möglichkeit für mich geben muss, die Parameter an hg zu übergeben. Ich kann einfach nicht herausfinden, was ich falsch mache.

+1

'$ hgAuth = "--config", "auth.x.prefix = *", "--config",„auth.x.username = $ Benutzername "," --config "," auth.x.password = $ Passwort "," --config "," auth.ex.schemes = http "' – PetSerAl

+0

Das hat es funktioniert. Wunderbar. Vielen Dank. – Hemisphera

+0

Wenn ich das ausführen, hängt Powershell nur, als ob es auf einen Benutzernamen/Pass wartet, aber zeigt dies in keiner Form an – ozzy432836

Antwort

1

Wie im obigen Kommentar erwähnt, musste ich es in ein Array aufteilen.

@PetSerAl: Ich weiß nicht, warum du es nicht als Antwort postest, also poste ich es hier als eins hier.

Es funktioniert, wenn wie dies getan:

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