Encore une contribution qui facilite la vie! Qafoo, une startup récemment fondée par les createurs de phpUnderControl, phpMD et phpDepend, vient de rajouter un autre projet a sa liste de projets open source PHP Commit Hooks, un framework facilite la création des pré et post commits.
Dans PCH, vous aurez a gerer des Vérificateurs »Checks » et des rapporteurs « Reporters ». Les vérificateurs vont implémenter par exemple des vérifications lint ou PHP_CodeSniffer. Les rapporteurs quand a eux, vont rapporter ces changements a l’utilisateur. Vous pourrez par exemple envoyer des mails de commit, ce qui simplifiera l’implémentation de votre installation de hooks.
Voici un exemple de creation d’un pré-commit :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | require dirname( __FILE__ ) . '/../environment.php'; $runner = new pchRunner(); $runner->register( new pchLintCheck() ); $runner->register( new pchSvnKeywordsCheck( array( 'php' => array( 'svn:keywords' => array( 'Revision', ), ), ) ) ); $runner->setReporter( new pchReporterDispatcher( array( new pchCliReporter(), new pchExitCodeReporter(), ) ) ); $runner->run( new pchRepositoryTransaction( $argv[1], $argv[2] ) ); |
Dans cet exemple, nous enregistrons un Checker pour Lint et un Checker pour les mots clés de Subversion (pchSvnKeywordsCheck).
Si le hook de pré-commit se termine avec une valeur différente de zéro, SVN rejettera le code du commit et affichera le message reçu a l’utilisateur. Le Reporter pchCliReporter va retourner donc ce message a SVN et le Reporter pchExitCodeReporter retournera un code différent de zéro dans le cas d’échec.
Les post-commit
Concernant les Post-commits, les hooks sont appelés d’une façon asynchrone afin de pouvoir exécuter des taches d’une longue durée, ils rapporteront les resultats par la suite par mail. voici un exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | require dirname( __FILE__ ) . '/../environment.php'; $runner = new pchRunner(); $runner->register( new pchCodeSnifferCheck( 'Arbit' ) ); $runner->setReporter( new pchReporterDispatcher( array( new pchMailReporter( 'postcommit@example.org', // Sender '{user}@example.org', // Receiver 'Coding style violations' // Mail topic ), new pchCommitMailReporter( '{user}@example.org', // Sender 'list@example.org', // Reciever '[SVN]' // Subject prefix ), ) ) ); $runner->run( new pchRepositoryVersion( $argv[1], $argv[2] ) ); |
Dans ce cas, on appelle un Checker PHP_CodeSniffer pour vérifier les fichiers nouvellement ajoutés, ou ceux modifiés. On enregistre deux rapporteurs, Un rapporteur de Mail qui enverra un mail au commiter ({user}@example.org), le second envoit le message a une mailing list.
Le projet est sous licence New BSD et il est disponible sur Github.







Houssem Ben salem