Me gustaría verificar el código comprometido en mi repositorio remoto de git con PHP CodeSniffer y rechazarlo si hay algún código de problemas. ¿Alguien tiene un ejemplo de cómo usarlo en el repositorio remoto de git o tal vez un ejemplo de cómo usarlo con un gancho de pre-recepción? Gracias.Git pre-receive hook para iniciar PHP CodeSniffer
Respuesta
Tal vez esto le apuntan en la dirección correcta: (Orginal de: http://www.squatlabs.de/versionierung/arbeiten-git-hooks en alemán)
#!/usr/bin/php
<?php
$output = array();
$rc = 0;
exec('git rev-parse --verify HEAD 2> /dev/null', $output, $rc);
if ($rc == 0) $against = 'HEAD';
else $against = '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
exec('git diff-index --cached --name-only '. $against, $output);
$needle = '/(\.php|\.module|\.install)$/';
$exit_status = 0;
foreach ($output as $file) {
if (!preg_match($needle, $file)) {
// only check php files
continue;
}
$lint_output = array();
$rc = 0;
exec('php -l '. escapeshellarg($file), $lint_output, $rc);
if ($rc == 0) {
continue;
}
# echo implode("\n", $lint_output), "\n";
$exit_status = 1;
}
exit($exit_status);
Tendrá que editar el ejecutivo de línea exec ('php -l ... para indicar una CodeSniffer . instalación
Ok he encontrado la solución :)
Esta es una prueba de concepto para la pre-:) recibir gancho:
#!/bin/bash
while read old_sha1 new_sha1 refname; do
echo "ns: " $new_sha1;
echo "os: " $old_sha1;
echo "----"
git ls-tree -r $new_sha1 | cut -f 3 -d ' ' | cut -f 1 | while read file; do
git cat-file blob $file
done;
echo "----"
done
exit 1
Este código de ejemplo solo imprimirá los blobs recibidos por el repositorio remoto, pero es suficiente para que alguien necesite algo así (espero).
Puede poner cada burbuja en algunos corren archivo temporal lo que necesita en este archivo borrar el archivo y así sucesivamente ...
gracias, eso ayudó mucho –
Esto podría ayudar: http://github.com/s0enke/git-hooks/tree/master/phpcs-pre-commit/
Este es un gancho precompromiso, que es muy diferente. –
he desarrollado un gancho git antes de recibir basado en PHPCodeSniffer para verificar el estilo del código de los archivos PHP, JavaScript y CSS.
Mi script está disponible en Github: https://github.com/blueicefield/PHP_CodeSniffer_GIT_Hook
¿Puede ampliar su respuesta con un ejemplo? ¿Le gusta el ejemplo bash en una respuesta anterior? Por lo tanto, está claro solo por la respuesta de cómo usarlo? – hakre
- 1. git hook sintaxis check
- 2. git post-push hook?
- 3. Git hook para conflictos de combinación
- 4. ¿Qué usuario ejecuta el git hook?
- 5. usando git hook después del commit
- 6. obtener mensaje de confirmación en git hook
- 7. Cómo propagar GIT Hook mientras clono
- 8. git hook post-merge - error: no se puede ejecutar
- 9. Git Hook: Actúa cuando se avanza una rama
- 10. Git Iniciar sesión ZSH Terminal
- 11. Hook processes
- 12. Subversion Hook
- 13. Problemas de Keyboard Hook
- 14. Git: convertir retorno de carro \ r a la nueva línea \ n con git hook?
- 15. Tutorial para Django CMS App Hook
- 16. shutdown hook para la aplicación web java
- 17. Cómo utilizar git hook pre-commit para detener confirmaciones al maestro
- 18. Pre-commit hook para Git cuando la compilación de Hudson ha fallado
- 19. Git Post-Receive Hook para puesta en escena del sitio web
- 20. ¿Qué tan útil es PHP CodeSniffer? Code Standards Enforcement en general?
- 21. Iniciar un daemon desde PHP
- 22. ¿Por qué CodeSniffer no incluye las carpetas --no especificado?
- 23. Cómo iniciar git daemon en Windows
- 24. ¿Cómo puedo establecer mi nivel de sangría preferido con PHP CodeSniffer?
- 25. Ada Shut Hook
- 26. C#: Keyboard Hook
- 27. Pagedown Editor insertimagedialog hook
- 28. Boost Intrusive List hook
- 29. Perl Dancer after hook
- 30. Mercurial pre commit hook
por desgracia no funciona con pre-recibir gancho :( – Ralphz
Nop, tendrá que crear una pre-commit en el lado del cliente, pero se puede realizar el seguimiento del gancho para que cada desarrollador tenga que tirar de los ganchos. AFAIK, usted el servidor no puede probar el contenido al presionar ... :( – FMaz008