2009年10月21日 星期三

freebsd + ahci

mav@freebsd.org 之前將 ahci(4) import 進 freebsd source tree, 昨天在桌機上裝了一下 freebsd 8,

順手把這個打開來用用看, 果然用起來沒問題呀.


安裝光碟, 預設還是 ata, 所以得裝完之後, 自己在 /boot/loader.conf 加上 ahci_loader="YES",

然後修改 /etc/fstab 之後, 重開機就可以使用 ahci 了, 當然, 硬體跟 bios 都要有支援就是, 有的 bios 預設就是 ata, 要自己進去改一下,

不然怎樣搞都還是進不了 ahci mode.

--
ata 硬碟的命名是 adX, ahci 則是 adaX, 所以 fstab 得自己改過.

2009年10月20日 星期二

git 的 hooks

由於公司內部一些東西改用 git 做版本控制, 所以現在用 git 的頻率還頗高的,

大家共用一個 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 );
?>