大家共用一個 codebase 最大的缺點, 就是有人可能搞爛東西, 然後大家還不知道,
為了預防這種事情發生, 大部分的 scm 都會有所謂的 hook, 可以在一些事情被執行前後, 做點檢查之類的事情.
我是直接拿 git pre-commit 這個 hook, 檢查更新過的 php 的 syntax, 如果有問題直接就不給 commit,
至於 bug, 當然是沒辦法檢查出來的.
下面是 code, 存成 .git/hooks/pre-install, chmod u+x 一下就可以用了,
不過比較好奇的是一般自己架設的 git server, 是可以自己處理 server side hooks, 但是 github 看起來並沒有這種機制.
#!/usr/bin/env php
exec( "git diff --numstat", $output );
$fa = array();
foreach( $output as $o ) {
$f = explode( "\t", $o );
$p = pathinfo( $f[2] );
if( $p['extension'] == 'php' )
$fa[] = $f[2];
}
foreach( $fa as $f ) {
system( "php -l $f", $result );
if( $result != 0 ) {
$flag = true;
break;
}
}
if ($flag) exit( 1 );
?>
沒有留言:
張貼留言