Powershell Git Hook退出代码

时间:2012-02-18 03:00:38

标签: windows git bash powershell

我的.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文件中的代码,但不捕获退出代码。根据{{​​3}},如果仅指定exit,则将返回最后一个退出代码。如果退出代码非零,Git挂钩将失败,但即使我的powershell脚本返回状态代码1,它也总是成功。如何从powershell脚本中捕获退出代码,以便钩子正常运行?

1 个答案:

答案 0 :(得分:6)

保持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}

之类的操作