He estado buscando esto por mí mismo, y me encontré con lo siguiente:
Git Powershell gancho pre-commit (Source)
## Editor's note: Link is dead as of 2014-5-2. If you have a copy, please add it.
PHP Sintaxis cheque por git pre-commit en 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
El código es para un enlace precompromiso, pero puede modificarlo para hacer casi cualquier cosa. ¡Debería ayudar con lo que necesita hacer!
¿No es posible hacer el guión invocar el script de PowerShell (o cualquier otro script para el caso, independientemente de su extensión)? – holygeek
¿Puede darnos un poco más de información sobre los ganchos git? – JPBlanc
@JPBlanc: [La página de manual de 'githooks '.] (Http://www.kernel.org/pub/software/scm/git/docs/githooks.html) No tengo idea si hay documentación diferente provista para Windows versión (s). – intuited