您好,登錄后才能下訂單哦!
單倉庫版請坐飛機過去 http://cswllz.blog.51cto.com/2746613/1933598
說操作前,我說一下我的環境,服務器用的是centos7.3,服務器用BT(寶塔系統),對操作文件速度快些,不用自己打命令,咱們要的是效率嘛,編輯器用Sublime text3
這里要說的是多倉庫版,和單倉版基本類似,區別在于authz和passwd兩個文件的處理
因為多倉庫是2個及以上的數量,為了方便管理權限、用戶名和密碼,結構如下圖
/var/svn #這里是svn的根目錄/var/svn/project1 #這里是倉庫1/var/svn/project2 #這里是倉庫2
重點在這里
1、把project1下面的conf文件夾下面的authz和passwd復制到svn根目錄下(/var/svn),這樣一來authz、passwd、project1、project2屬于同一級目錄下了
2、用Sublime text3打開authz(以下為內容)
[groups] #svngroup 為用戶組,laowei為用戶 svngroup = laowei,laowei2 #"="號左右必須有一個空格 [laowei:/] #表示svngroup組對根目錄下的laowei域有讀寫權限,r為讀,w為寫 @svngroup = rw
操作完以上,就可以保存authz
3、用Sublime text3打開passwd(以下為內容)
[users] laowei = 123456 laowei2 = 123456
4、用Sublime text3分別打開/var/svn/project1/conf和/var/svn/project2/conf下的svnserve.conf,加入以下內容
[general] #控制非鑒權用戶訪問版本庫的權限 anon-access = none #控制鑒權用戶訪問版本庫的權限 auth-access = write #指定用戶名口令文件名 password-db = ../../passwd #指定權限配置文件名 authz-db = ../../authz #指定版本庫的認證域,即在登錄時提示的認證域名稱 realm = laowei #這里的laowei和第二點中的[laowei:/]對應
---------------以上處理完畢,環境這真就OK了---------------------
當我們本地環境svn up到倉庫里,想讓倉庫更新的同時,測試網站也同步更新,怎么辦?這里我們就需要用到鉤子,不要因為不知道什么是鉤子而害怕,照下面說的操作就行了
第一步 創建鉤子,以project1為例,在/var/svn/lw_taoke/hooks下,新建名為post-commit的文件,注意,這個文件沒有擴展名,在寶塔系統下建立非常方便,建好把下面代碼復制進去
#!/bin/sh REPOS="$1" # 倉庫的路徑 REV="$2" # 新提交的版本號 LOGFILE=/var/log/svn_lw_taoke.log # 鉤子腳本的日志 # 腳本的標準輸出和標準錯誤輸出都打印到日志文件里 exec 1>>"$LOGFILE" exec 2>&1 SVNLOOK=/usr/bin/svnlook TIME=$(date "+%Y-%m-%d %H:%M:%S") AUTHOR=$($SVNLOOK author -r $REV "$REPOS") #提交作者 CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS) #修改的目錄集合 MESSAGE=$($SVNLOOK log -r $REV "$REPOS") #提交時的備注信息,不建議用中文 # SVN客戶端配置,需要自行修改********************************** CLIENT1=10.14.213.21 #project1的服務器 #CLIENT2=172.16.4.236 #project2的服務器 CLIENTSVNROOT=/www/wwwroot/we.chenshangwei.com #WEB服務器的代碼根目錄 SVNUSER="lw_taoke" SVNPASSWD="Baihdgvcsw351" #************************************************************** function myecho() { echo "$TIME" "$*" } myecho "**************************************************************" myecho "提交版本:$REV 作者:$AUTHOR" myecho "提交備注:$MESSAGE" myecho "修改目錄:$(echo $CHANGEDDIRS | tr '\n' ' ')" MASTERDIR=$(echo "$CHANGEDDIRS" | head -1) #CHANGEDDIRS里的最上級目錄 # 遍歷提交的代碼目錄,同步到WEB服務器上 while [ "$CHANGEDDIRS" != "" ];do PROJECT=$(echo $MASTERDIR | awk -F / '{print $1}') # 判斷項目文件夾 myecho myecho "項目:$PROJECT 同步目錄:$MASTERDIR" myecho "同步 $MASTERDIR 到 $CLIENT1:$CLIENTSVNROOT/$MASTERDIR" # 無密碼ssh連接到客戶端服務器,執行svn up export LANG=en_US.UTF-8; sudo -u www svn up --non-interactive --username $SVNUSER --password $SVNPASSWD "$CLIENTSVNROOT"/lw_taoke #svn up --non-interactive --username $SVNUSER --password $SVNPASSWD "$CLIENTSVNROOT"/lw_taoke # 在目錄集合里刪除子目錄 CHANGEDDIRS=$(echo "$CHANGEDDIRS" | grep -v "^$MASTERDIR") # 獲取新的需要同步的最上級目錄 MASTERDIR=$(echo "$CHANGEDDIRS" | head -1) done
第二步 切換到測試網站根目錄,打入以下命令,意思是撿出倉庫中的代碼,并把project1的所有者改成www
sudo -u www svn co svn://10.14.213.219/lw_test /www/wwwroot/project1
第三步 在你本地網站上操作撿出功能,然后在撿出的目錄下,你可以新建個文件或文件夾,提交更新就會把這個文件或文件夾同步到測試網站了,是不是很方便
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。