2017-12-29 14 views
1

Ich versuche, einen git Skript in VSTS Aufgaben mit Powershell zu handhaben, aber es funktioniert nicht wie erwartet.in Powershell

Was ich tue neueste Nachrichten verpflichtet abruft, nachdem der letzte Tag in einer Release Notes zu setzen, ist dies die Basis git Befehl:

git log `git describe --tags --abbrev=0`..HEAD --no-decorate --no-merges --abbrev=0 --pretty=format:"%s" 

Aber Powershell dieses Format nicht akzeptieren, so dass ich wie folgt vorgehen:

$latestTag = git describe --tags --abbrev=0 
$releaseNotes = git log $latestTag..HEAD --no-decorate --no-merges --abbrev=0 --pretty=format:"%s" 

es scheint, dass, wenn ich die Variable $latestTag setzen neben ..HEAD es Zeilenumbrüche, wenn ich den Tag zum Beispiel angeben. v1.2.9 anstelle der Variablen funktioniert es gut.

Was kann ich tun, damit es richtig laufen? Danke.

+1

Nicht sicher, aber versuchen '$ latestTag..HEAD' in' "' –

+0

umschließenden Es funktionierte, wurde letzte Build zwischengespeichert, es ist jetzt der richtige Wert zurückgegeben! Könnten Sie bitte per Post, so kann ich @MarkAdelsberger akzeptieren –

Antwort

3

Sie können den Ausdruck $latestTag..HEAD in " Marken, wie

$latestTag = git describe --tags --abbrev=0 
$releaseNotes = git log "$latestTag..HEAD" --no-decorate --no-merges --abbrev=0 --pretty=format:"%s" 

Das ist etwas mit dem zu tun hat, wie Powershell-Variablen erweitert, schließen aber ich PS nicht genug, um verwenden wirklich es verstehen.

+2

Eine Vermutung I würde sagen, dass es PowerShell daran hindert, das ".." als Bereichsoperator zu interpretieren (dh Bereich von 1 bis 10 ist "1..10") und stattdessen als String. –

1

Wenn Sie wollen, dass es halten auf einer einzigen Zeile Sie möglicherweise die Powershell-Syntax zum Einbetten Kommentar mit so etwas wie Ihr Original versuchen können. Übersetzen auf Powershell-freundlichen Aussagen halte ich es für so etwas wie

git log $(git describe --tags --abbrev=0)..HEAD --no-decorate --no-merges --abbrev=0 --pretty=format:"%s" 

Dies sollte den Ausdruck in $() lösen würde und dann das Ergebnis als Text einfügen, um den git log Befehl viel wie Ihr Original.