在linux服務器上裝svn版本管理,自動同步代碼到項目根目錄


首先搭建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問題)
  • [/]
  • * = rw
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站點根目錄
具體操作:
一、使用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 #不保存賬戶認證信息
二、客戶端測試
使用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目錄,然后就可以識別並自動更新提交的文件到改目錄下了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM