最近用到Subversion來做版本控制,但常常commit完之後還得再把資料複製一份到www資料夾,實在不方便。查了一下資料發現,原來svn有一些hook可以用,例如可以在commit之前或之後做某些事情,這樣就可以讓開發人員commit之後,直接在web上就看到成果。
- SVN Server環境是FreeBSD 6.3
- repository放的位置:/home/svn/repository
- 專案名稱:test
- web資料夾:/www/test
在每個repository底下都有個hooks資料夾,裡面有好幾個寫好的template,光看名字大概就知道他們是要做什麼事的。這邊我只拿post-commit來用(其它的可參考Subversion Book)。
> cp post-commit.tmpl post-commit
> vi post-commit
我在裡面加了幾行update的語法:
#!/bin/sh
export LANG=zh_TW.UTF-8
/usr/local/bin/svn update –username myid –password mypw /www/test
加入第一行是因為有些非英文檔名的檔案在update的時候可能會出錯,其中myid跟mypw請代入自己的svn帳號密碼。另外,記得chmod +x,讓它變成可執行
最後,在web資料夾checkout一下test專案,大致上應該就可以運轉了。