GIT pre-ricevere gancio per lanciare PHP CodeSniffer [chiuso]
-
23-09-2019 - |
Domanda
Mi piacerebbe controllare il codice impegna a mio repository git a distanza con PHP CodeSniffer e respingerla se ci sono norme del codice problemi. Qualcuno ha un esempio di come usarlo su git repository remoto o forse esempio come usarlo con pre-ricezione gancio? Grazie.
Soluzione
Forse questo ti punto nella giusta direzione: (Orginal da: http: // www.squatlabs.de/versionierung/arbeiten-git-hooks in tedesco)
#!/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);
Si dovrà modificare la riga exec exec ( 'php -l ... per puntare alla propria installazione codesniffer.
Altri suggerimenti
Ok ho trovato la soluzione:)
Si tratta di codice di prova :) per il pre-ricezione gancio:
#!/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
Questo codice di esempio sarà solo macchie di stampa ricevuto dal repository remoto, ma è sufficiente per ottenere qualcuno che necessitano di una cosa del genere andare (spero).
È possibile inserire tutti i blob in un certo periodo di file temporanei tutto ciò che serve su questo file eliminare il file e così via ...
Questo potrebbe aiutare: http: // GitHub. com / s0enke / git-hooks / albero / master / phpcs-pre-commit /
Ho sviluppato una ricezione pre-gancio git sulla base di PHPCodeSniffer per controllare il codice stile di PHP, Javascript e CSS file.
Il mio script è disponibile da Github: https://github.com/blueicefield/PHP_CodeSniffer_GIT_Hook