我的.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脚本中捕获退出代码,以便钩子正常运行?
答案 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}