通過SVN進行版本庫管理,每次提交后,都要在SVN服務器更新最新上傳的版本到WEB目錄進行同步。操作比較煩瑣,而且效率也低。使用SVN鈎子腳本進行WEB目錄同步,可很好的解決這方面的問題。由於測試機器與SVN庫都在同一台機器里,所以處理起來比較方便。
svn項目下面有hooks目錄,里面存放的是全部的鈎子腳本的模板
post-commit.tmpl 為客戶端commit提交后觸發
以下是windows和linux下自動更新版本庫的方法:
在SVN 項目版本庫的存儲目錄下的hooks 目錄,新建立一個post-commit.bat 文件:
windows:
@echo off
SET REPOS=%1
SET REV=%2
SET DIR=%REPOS%/hooks
SET PATH=%PATH%;
SET WORKING=E:/www/o135
svn update %WORKING% --username o135 --password o135123
注意:以上方法必須把SVN服務器安裝目錄下的bin加入到path路徑(環境變量)中。SVN通過setup進行安裝,默認會將bin目錄增加到path路徑中,如果通過壓縮包進行安裝,必須要手動增加。
要想知道此腳本是否出錯,可在cmd命令行里輸入:C:\Documents and Settings\Administrator>e:/svn/hooks/post-commit.bat 進行測試。出現以下信息則表明腳本成功執行:
C:\Documents and Settings\Administrator>e:/svn/hooks/post-commit.bat
正在升級 ‘E:\www\o135′:
版本 15。
紅色部分是版本庫的位置,大家按實際位置進行修改。
以后不管那台機器,只能通過svn commit命令,都會觸發此腳本,自動同步web目錄中。
linux:
linux下原理跟windows是一樣的。只是新建的文件名不一樣。
在SVN 項目版本庫的存儲目錄下的hooks 目錄,新建立一個post-commit文件:
vi post-commit
增加以下代碼:
#!/bin/sh
WEB=/home/data/o135
export LANG=en_US.UTF-8
svn update $WEB --username o135 --password 'o135123'
保存,退出。。
給予此腳本的權限:
chmod 777 post-commit
測試一下,看腳本是否有權限問題
./post-commit
以后每次客戶端提交操作,就會自動運行該腳本。