Tentar desembolsar comandos git pode ser difícil de depurar ... aqui está um exemplo de código ...
; 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
Onde ....
Quote(text)
{
return chr(34) . text . chr(34)
}
Aqui estão algumas coisas que faço para solucionar problemas ...
- Colocar o comando git em uma variável facilita a alteração posterior ou referência
- Eu gosto de ter uma função
quote()
, pois usar o=
me confunde e tenho a tendência de usar:=
com mais frequência - Usar
Runwait
é útil se você tiver comandos sucessivos para executar que não devem ser executados ao mesmo tempo - Usar
comspec /c
é útil se você precisar redirecionar a saída do script por meio da linha de comando vs. usando um comando totalmente autônomo - Se você precisar depurar um script mais complicado, defina o comando completo que deseja executar em uma variável, pergunte ao usuário se a operação foi bem-sucedida e, se selecionar não, copie o conteúdo para a área de transferência para poder colar na linha de comando. Dessa forma, quando você chegar a algo, você poderá verificar se funcionou e, quando isso não acontecer, você abrirá uma janela de comando, clicará em colar e verá porque falhou.
ou seja,
;---------------------------------------------------------------------------------------------------------
; 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
}