這里配置自動更新用的是svn的鉤子,腳本是shell,也可以用其他的腳本比如python
鉤子腳本的具體寫法就是操作系統中shell腳本程序的寫法,請根據自己SVN所在的操作系統和shell程序進行相應的寫作
實現原理:當用戶提交commit動作發生都讓另外一處project馬上從倉庫中進行代碼checkout一份出來!
1.在Web目錄遷出代碼
`sudo svn co svn://127.0.0.1/test /var/www/html --username admin --password admin`
2.添加腳本
在svn項目的hooks文件夾中的post-commit文件中添加腳本:用vi命令編輯一個新的post-commit(看清楚沒有后綴名)千萬不要用hooks文件夾里自帶的post-commit文件,那是模板。
`sudo vi /srv/svn/test/hooks/post-commit`
在文件中添加如下內容:
~~~
#!/bin/sh
WEB=/var/www/html #web服務器下的項目不能有空格。
#說明:post-commit會接受兩個參數
REPOS="$1" #/srv/svn/test 表示svn倉庫的絕對路徑值
REV="$2" #表示最新的一個版本號。最后一個版本號
export LANG=en_US.UTF-8
svn update $WEB --username admin --password admin #相當于客戶端的update操作
exit 0
~~~
修改權限
`chmod 777 post-commit`
如果不能判斷自己寫的shell腳本是否有錯,可以現在hooks目錄下運行`./post-commit`試一下
如果出現了sqlite[S8]:attempt to write a readonly database報錯
`sudo chown -R www-data:www-data post-commit`