2012-02-18 25 views
5

Ben Bu başarıyla aynı dizinde pre-commit-hook.ps1 dosyasındaki kodu yürütür, ancak çıkış yakalamak değilPowerShell Git Kanca Çık Kod

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

dosya önceden taahhüt/benim .git/kanca aşağıdaki var kodu. tldp.org'a göre, sadece çıkış belirtilirse son çıkış kodu verilir. Çıkış kodu sıfırdan farklıysa Git kancaları başarısız olur, ancak powershell komutum 1 durum kodunu döndürse bile, her zaman başarılı olur. Bağlantı kodu powershell komut dosyasından yakalamak için ne yapabilirim, böylece kanca düzgün bir şekilde çalışır?

+0

böyle bir şey yapmak gerekebilir :: Çıkış (1)' dönmek için arayana sıfır olmayan kod. Eğer bu çalışırsa cevap vereceğim :-) –

+0

nope çalışmıyor. Ben zaten komutumda '' exit 1' 'vardı ama bu işe yaramadı ya da –

+0

işe yaramadı ... Çünkü bazen [çalışmıyor] (http://stackoverflow.com/questions/8902004/powershell -fails-to-dönüş-düzgün-exit-kodu/8902329 # 8902329). –

cevap

6

Ps1 komut dosyasının çağrısını basit tutun ve çalışmasını sağlamalısınız. Benim için aşağıdaki çalışmaları:

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

ps1 komut sadece bir exit 1 vardı ve olmadı işlemek. Eğer -command böyle şeyler yapıyorsun

, Powershell düzgün çalışması için bilinmemektedir ve size komut deneyin `[çevreyi] ekleyerek yılında -command {& .\test.ps1; exit $lastexitcode}

+1

Yup. Buradaki anahtarın, "ön-taahhüt" ünün kendisi zaten .git/hooks'ta çalışıyor olsa da, geçerli dizinin projenizin kökü olduğunu düşünüyorum. Bu kesinlikle doktorlarda değil;) –