是否有可能以git掛鉤運行PowerShell腳本?運行PowerShell腳本作爲git掛鉤
我在PowerShell提示符下運行git,這應該沒有什麼區別,但我似乎無法讓它們工作,因爲鉤子命名時沒有擴展名,PowerShell需要(AFAIK).ps1延期。我不確定這是否是問題或其他問題。
感謝, 埃裏克
是否有可能以git掛鉤運行PowerShell腳本?運行PowerShell腳本作爲git掛鉤
我在PowerShell提示符下運行git,這應該沒有什麼區別,但我似乎無法讓它們工作,因爲鉤子命名時沒有擴展名,PowerShell需要(AFAIK).ps1延期。我不確定這是否是問題或其他問題。
感謝, 埃裏克
從我所收集的唯一選擇,由於Git的設計在這裏將是一個bash腳本調用的PowerShell。不幸的是,Git沒有考慮非Linux的兼容性。
這似乎是答案。這是否可惜 - 我們並不都是bash愛好者,而windows上的bash始終是第二位。謝謝。 – 2011-04-13 04:42:53
如果git支持任意平臺的腳本,那麼這些鉤子的配置文件在bash腳本引導程序中看起來有多不同? – brianary 2013-04-09 16:20:14
我一直在尋找這個我自己,我發現:
Git的Powershell的pre-commit鉤子(Source)
## Editor's note: Link is dead as of 2014-5-2. If you have a copy, please add it.
PHP語法檢查git的預先承諾的PowerShell的(Soure)
##############################################################################
#
# PHP Syntax Check for Git pre-commit hook for Windows PowerShell
#
# Author: Vojtech Kusy <[email protected]>
#
###############################################################################
### INSTRUCTIONS ###
# Place the code to file "pre-commit" (no extension) and add it to the one of
# the following locations:
# 1) Repository hooks folder - C:\Path\To\Repository\.git\hooks
# 2) User profile template - C:\Users\<USER>\.git\templates\hooks
# 3) Global shared templates - C:\Program Files (x86)\Git\share\git-core\templates\hooks
#
# The hooks from user profile or from shared templates are copied from there
# each time you create or clone new repository.
### SETTINGS ###
# Path to the php.exe
$php_exe = "C:\Program Files (x86)\Zend\ZendServer\bin\php.exe";
# Extensions of the PHP files
$php_ext = "php|engine|theme|install|inc|module|test"
# Flag, if set to 1 git will unstage all files with errors, se to 0 to disable
$unstage_on_error = 0;
### FUNCTIONS ###
function php_syntax_check {
param([string]$php_bin, [string]$extensions, [int]$reset)
$err_counter = 0;
write-host "Pre-commit PHP syntax check:" -foregroundcolor "white"
git diff-index --name-only --cached HEAD -- | foreach {
if ($_ -match ".*\.($extensions)$") {
$file = $matches[0];
$errors = & $php_bin -l $file
if ($errors -match "No syntax errors detected in $file") {
write-host $file ": OK" -foregroundcolor "green"
}
else {
write-host $file ":" $errors -foregroundcolor "red"
if ($reset) {
git reset -q HEAD $file
write-host "Unstaging" $file "..." -foregroundcolor "magenta"
}
$err_counter++
}
}
}
if ($err_counter -gt 0) {
exit 1
}
}
### MAIN ###
php_syntax_check $php_exe $php_ext $unstage_on_error
代碼是用於預先提交的鉤子,但您可以修改它以執行任何操作。應該幫助你需要做的事情!
第一個不適合我。 PowerShell腳本的相對路徑無法正確解析。 – 2013-05-27 19:30:37
將pre-commit.sample重命名爲預先提交到hooks文件夾中。 然後在相同的文件夾中創建pre-commit.ps1 powershell腳本文件。
#!/bin/sh
c:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy RemoteSigned -Command -File '.git\hooks\pre-commit.ps1'
Kim Ki Won
的回答上面並沒有爲我工作,但它具有upvotes,所以我會假設它爲一些人。
什麼工作對我來說是下降的bin/sh和,而不是使用 - 文件執行,直接執行命令:
c:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy RemoteSigned -Command .\.git\hooks\pre-commit.ps1
這也適用於我,謝謝! – David 2016-10-11 20:46:52
這是在Windows的git我的鉤位於\ git的\掛鉤。
更新後的
#!/bin/sh
c:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -Command '.\post-update.ps1'
位於項目的根文件夾(您最初運行git的init)PowerShell腳本。 Powershell進入另一個存儲庫並調用pull,更新該存儲庫。
後update.ps1
Set-Location "E:\Websites\my_site_test"
$env:GIT_DIR = 'E:\Websites\my_site_test\.git';
$env:GIT_EXEC_PATH= 'C:\Program Files (x86)\Git/libexec/git-core';
git pull
是不是有可能使腳本調用PowerShell腳本(或任何其他腳本對於這個問題,無論其擴展名)? – holygeek 2011-04-12 01:32:59
你可以提供一些關於git鉤子的更多信息。 – JPBlanc 2011-04-12 04:45:03
@JPBlanc:[The'githooks' manpage。](http://www.kernel.org/pub/software/scm/git/docs/githooks.html)我不知道是否爲Windows提供了不同的文檔(諸)版本。 – intuited 2011-04-12 06:09:41