2016-04-25 10 views
0

Ich versuche zu automatisieren ziehen die neueste Version unseres Codes von bitbucket mit git.exe über psake in Powershell, aber ich habe mit einer Reihe von Problemen zu kämpfen.git und psake von Powershell

ich den folgenden Code in einer Aufgabe haben:

Exec { 
     &('c:\Program Files\Git\bin\git.exe') pull --progress --no-rebase -v origin 
    } 

aber ich bekomme die folgende Fehlermeldung:

Error: 25/04/2016 22:51:02: 
At C:\work\mycompany\buildapp\psakefile.ps1:117 char:5 +  
&('c:\Program Files\Git\bin\git.exe') pull --progress --no-rebase -v origin 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
[<<==>>] Exception: From bitbucket.org:mybitbucketusername/work 

Ich nehme an, das ist, weil ich nicht git.exe Aufruf von meiner Ordner klonen, aber wie mache ich das? Gibt es eine Möglichkeit, a) git von meinem aktuellen Standort aus aufzurufen und auf einen bestimmten Klonordner anzuwenden? oder b) Wenn a) nicht möglich ist, wie ändere ich den Ordner in psake?

Angenommen, ich kann das erste Problem beheben, wie kann ich den genauen Fehler von Git zurückgegeben. Nur bekommen Ausnahme: Von bitbucket.org ist zu vage.

Gibt es eine bessere Möglichkeit, meinen Code von Bitbucket zu ziehen? Soll ich git bash (für Windows) mit psake von Powershell aufrufen? Ist das besser? Wenn ja, wie rufe ich es mit der spezifischen Befehlszeile auf.

Wenn Sie möchten, dass ich weitere Informationen zur Verfügung stelle, lassen Sie es mich wissen.

Update 1:

Dies ist, was ich bekomme, wenn ich git pull

Error: 26/04/2016 15:46:30: 
At C:\work\mycompany\buildapp\psakefile.ps1:120 char:5 +  
&('c:\Program Files\Git\bin\git.exe') pull + 
[<<==>>] Exception: There is no tracking information for the current branch. 

nennen Dies ist zu erwarten, als c: \ work \ mycompany \ BUILDAPP nicht die geklonten Ordner ist. Es ist ein Unterordner des geklonten Ordners.

Ich muss in der Lage sein, git in c:\work\mycompany\buildapp aufrufen (da dies ist, wo mein Skript läuft), aber ich brauche Git, um Daten aus c:\work\mycompany\ zu ziehen.

Ich hoffe, das Obige klärt meine Frage.

Danke.

UPDATE 2:

git clone [email protected]:myusername/work.git "c:/Work/" 

git --git-dir=c:\work\.git --work-tree=c:\work pull origin master 

mit PSake Die folgenden Werke:

Die folgenden git Befehlszeilen perfekt funktionieren läuft eine Befehlszeile aus einem beliebigen Ordner aufgerufen wird

Exec { 
    &('c:\Program Files\Git\bin\git.exe') clone 
     [email protected]:myusername/work.git 'C:/Work/' 
} 

Aber ziehen Sie immer noch nicht funktioniert, wenn auf diese Weise aufgerufen:

exec { 
    &('c:\program files\git\bin\git.exe') --git-dir=c:\work\.git 
     --work-tree=c:\work pull origin master 
} 

ich noch einen Fehler: viel

Error: 29/04/2016 10:06:36: 
At C:\temp\buildapp\psakefile.ps1:124 char:8 +   
&('c:\program files\git\bin\git.exe') --git-dir=c:\work\.git - ... + 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
[<<==>>] Exception: From bitbucket.org:myusername/work 

Leider ist die Ausnahme uns nicht sagen.

Ich habe verschiedene Kombinationen mit Anführungszeichen/Doppelzitat mit den Argumenten ausprobiert, aber ohne Erfolg.

Irgendwelche Ideen?

+0

Gibt es mehr zu diesem Fehler? Entweder über oder unter diesem Snippet? Das ist deine Fernbedienung, also muss sie in deinem Git-Arbeitsverzeichnis sein. Vermissen Sie vielleicht die notwendigen Anmeldeinformationen? –

+0

Von git -h Ausgabe: '[--git-dir = ] [--work-tree = ]' so müssen Sie nur diejenigen angeben, um git überall auszuführen. Alternative wäre, Invoke-WebRequest zu verwenden, um eine Zip mit der neuesten Quelle von bitbucket zu erhalten, denke ich – stijn

+0

@EtanReisner - Nein, das ist leider der volle Fehler, der angezeigt wurde. Ich änderte mein ssh, um keine Umschreibung zu haben, und teste es und es funktioniert wie erwartet, also glaube ich nicht, dass es die Berechtigung ist. Irgendwelche anderen Ideen? – Thierry

Antwort

0

Going to meine eigene Antwort aber vielen Dank an @etanreisner & @spijn für ihre Hilfe und Anregungen.

Sehr viel Zeit wurde für dieses Problem verschwendet und es war alles eine Sache !! Meine Skripte direkt in ISE ausführen. Dies wurde mir von Dave Wyatt freundlicherweise zur Verfügung gestellt, nachdem ich einen Fehlerbericht über psake gepostet habe. Hier ist das, was er sagte:

Is this happening from the powershell.exe console, from the ISE, or both? The ISE treats any console application that writes to the stderr stream as an exception, but powershell.exe does not. (This is because powershell.exe is a win32 console application, and can just let that subsystem handle interaction with other console apps. The ISE has its own code to pretend to be a console when it's really a WinForms app, and the behavior is different. I believe Microsoft intends to fix this soon.)

Anyhow, git.exe writes to stderr all over the place, which is why I always keep a separate console open when I want to run git commands (so I don't have to stare at the red text all the time.)

Hier ist die eigentliche Frage, die ich auf Github erstellt: Psake always throws an exception when calling git.exe and trying to clone #174

Nach dem folgenden in Powershell versucht, anstatt ISE:

Git Clone: ​​

Git ziehen:

Hoffe, das hilft anderen und wird nicht so viel Zeit verschwenden wie ich auf etwas so trivial noch nicht offensichtlich, es sei denn, Sie sind sich dessen bewusst!