Код выхода Gers Hook от Powershell - PullRequest
6 голосов
/ 18 февраля 2012

В моем файле .git / hooks / pre-commit есть следующее

#!/bin/sh
exec c:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy RemoteSigned -Command " Get-Location | % { '$_\pre-commit-hook.ps1'} | % { & $_ }"
exit

Это успешно выполняет код в файле pre-commit-hook.ps1 в том же каталоге, но не захватывает код выхода,Согласно tldp.org последний код выхода будет возвращен, если указан только выход.Перехватчики Git потерпят неудачу, если код выхода не равен нулю, но даже если мой скрипт powershell возвращает код состояния 1, он всегда завершается успешно.Что я могу сделать, чтобы захватить код выхода из скрипта powershell, чтобы хук работал правильно?

1 Ответ

7 голосов
/ 18 февраля 2012

Сохраняйте простой вызов сценария ps1, и он должен работать. У меня работает следующее:

#!/bin/sh
echo 
exec powershell.exe -ExecutionPolicy RemoteSigned -File '.\.git\hooks\pre-commit-hook.ps1'
exit

Сценарий ps1 только что имел exit 1, а фиксация не произошла.

Когда вы делаете что-то вроде -command, Powershell не работает должным образом, и вам, возможно, придется сделать что-то вроде -command {& .\test.ps1; exit $lastexitcode}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...