Попытка выложить команды git может быть трудной для отладки ... вот пример кода ...
; need quotes for running inside of cmd (w/ comspec)
; super global to reference it in other functions
global gitExe := quote("C:\Program Files\git\bin\git.exe")
tmpFile := A_Temp . "\gittemp.txt"
fileDelete, %tmpFile%
RunWait, %comspec% /c %gitExe% status > %tmpFile%, %A_ScriptDir%, Hide
FileReadLine, tmpVar1, %tmpFile%, 1
FileReadLine, tmpVar2, %tmpFile%, 2
global WorkingDirectory := "C:\Something"
RunWait, %comspec% /c %gitExe% --global http.proxy http://xxx:8080, %WorkingDirectory%, Hide
Куда....
Quote(text)
{
return chr(34) . text . chr(34)
}
Вот несколько вещей, которые я делаю для устранения неполадок ...
- Помещение команды git в переменную облегчает ее последующее изменение или ссылку
- Мне нравится иметь функцию
quote()
так как использование =
смущает меня, и я склонен использовать :=
чаще
- Использование
Runwait
полезно, если у вас есть последовательные команды для запуска, которые не должны выполняться одновременно
- Использование
comspec /c
полезно, если вам нужно перенаправить вывод скрипта через командную строку, а не использовать полностью автономную команду
- Если вам нужно отладить более сложный сценарий, задайте полную команду, которую вы хотите запустить, в переменную, затем спросите пользователя, успешно ли выполнена операция, и, если он выберет нет, скопируйте содержимое в буфер обмена, чтобы вы могли вставить его в командная строка. Таким образом, когда вы добираетесь до чего-то, вы можете проверить, работает ли это, а когда нет, вы открываете окно команд, нажимаете кнопку вставки и видите, почему это не удалось.
т.е.
;---------------------------------------------------------------------------------------------------------
; git_CommitAll() - ; Commit everything on the current branch using the commit message
;
;---------------------------------------------------------------------------------------------------------
git_CommitAll(commitMsg)
{
tmpCmd := comspec . " /c " . quote(gitExe . " commit -a -m " . quote(commitMsg))
RunWait, %tmpCmd%, %WorkingDirectory%, hide ; change hard-coded folder as needed
if debug := True ; set this true/false here to use debugging or not
{
msgbox,4,,Did command work right?
IfMsgBox, no
{
clipboard := tmpCmd
msgbox Command has been copied to clipboard`n`n%tmpCmd%`n`nClick OK to continue...
}
}
return True
}