首先搭建SVN服務器
1,安裝SVN服務端
直接用apt-get或yum安裝subversion便可(固然也能夠本身去官方下載安裝)
sudo apt-get install subversion
2,建立版本庫
svnadmin create /home/myrepos //這裏的文件目錄本身隨便設置
3,配置svnserve
上述版本庫/home/myrepos創建後在文件夾下會生成conf文件夾,進入/home/myrepos/conf下面會有下面3個文件
authz passwd svnserve.conf
咱們依次修改
3.1,svnserve.conf修改如下幾個部分:
- authz-db = authz
- auth-access = write
- password-db = passwd
- authz-db = authz
3.2,passwd修改成:
- [users]
- username = password //這裏的username和password本身設置
3.3,authz最後加上如下兩行(這兩行解決了 SVN客戶端解決authorization failed問題)
4,啓動svnserve便可:
svnserve -d -r /home/myrepos/
5,客戶端使用:
客戶端用svn或者windows下的TortoiseSVN客戶端
5.1,從服務端checkout版本庫(在當前目錄下)
svn checkout svn://服務器的ip地址/
5.2,本身增長一些文件,或者把以前的東西(以下面三個文件夾)拷貝到當前目錄下,想讓svn幫你管理
code project document
5.3,假設我把上述三個文件夾放到當前svn的文件夾下想讓svn管理,而後我要作的是添加到svn版本庫裏:
svn add code project document //或者直接用svn add *
5.4,最後提交到svn服務器
svn commit -m 'import three directories'
必定要對當前版本寫註釋。
而後配置SVN鉤子自動更新項目文件到web目錄
在SVN服務器端
說明:
服務器操做系統:ubuntu(linux)
SVN安裝路徑:/usr/bin/svn
SVN項目路徑:/home/svn
SVN登陸帳號:yourname
SVN登陸密碼:yourpass
Web站點根目錄:/home/wwwroot/
實現目的:
當svn項目中有任何修改更新時,系統會自動實時從svn中檢出文件並同步到Web站點根目錄
具體操做:
1、使用SVN中post-commit實現自動實時從svn中檢出文件並同步到Web站點根目錄
cd /home/svn/hooks
cp post-commit.tmpl post-commit
vim post-commit #編輯,添加如下代碼
REPOS="$1" REV="$2" export LANG=en_US.UTF-8 SVN_PATH=/usr/bin WEB_PATH=/home/wwwroot/ SVN_USER=admin SVN_PASS=admin LOG_PATH=/tmp/svn.log echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH echo `whoami`,$REPOS,$REV >> $LOG_PATH $SVN_PATH/svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH |
:wq #保存退出
chown www:www /home/svn/hooks/post-commit #設置腳本所屬用戶組,www爲web服務運行帳戶和組
chmod +x /home/svn/hooks/post-commit #添加腳本執行權限
說明:
whoami #執行此程序的用戶
REPOS="$1" #svn項目絕對路徑值
REV="$2" #最新版本號
--no-auth-cache #不保存帳戶認證信息
2、客戶端測試
使用svn客戶端添加一個文件以後,進行svn添加並提交操做進入服務器/home/wwwroot目錄下能夠看到提交到svn的文件已自動更新到web目錄下
至此,Linux下SVN服務器自動更新文件到Web目錄教程完成。
ps:你可能會遇到這個問題
在日誌文件中
Skipped "/home/wwwroot"
而後提交的文件並無自動更新到web目錄下
個人解決方法是:
cd /home/wwwroot/
svn checkout svn://服務器的ip地址 ./
而後你新提交的文件就能夠自動更新到web目錄下了
分析緣由:/home/wwwroot/目錄下不存在.svn目錄,svn不知道/home/wwwroot/
checkout後會在/home/wwwroot/目錄下生成.svn目錄,而後就能夠識別並自動更新提交的文件到改目錄下了