Ich führe in einer Konsole im Hintergrund git-Befehle aus und verwerte dann deren Rückgabe in die Konsole. Das klappt auch, solange ein Repo vorhanden ist.
Nun habe ich folgendes, für mich nicht erklärbares, Verhalten:
Wende ich eine git-Befehl in einem Ordner ohne Repository an, bekomme ich einen Fehler (ist auch gewünscht zur Auswertung) den ich jedoch nicht auffangen kann. Die Fehlermeldung landet in der Konsole des Aufrufs (SciTE) und die Return-Variable bleibt leer.
AutoIt
#include <AutoItConstants.au3>
; wechseln in Verzeichnis ohne Repo
FileChangeDir('C:\Users')
$Status = _GitStatus()
ConsoleWrite('<< Status >>' & @CRLF & $Status & @CRLF)
Func _GitStatus()
Return _CMDLineRead('git status')
EndFunc
Func _CMDLineRead($_sCMD)
Local $PID = Run(@ComSpec & " /c " & $_sCMD, "", @SW_HIDE, $STDOUT_CHILD)
Local $sLine, $sOutput = ''
While 1
$sLine = StdoutRead($PID)
If @error Then ExitLoop
$sOutput &= $sLine
WEnd
Return $sOutput
EndFunc
Alles anzeigen