centos7下svn伺服器的搭建和使用
大綱:
1.什麼是svn伺服器
2.svn安裝
3.svn配置
4.配置svn的伺服器目錄和自動同步
5.設定svn的開機自啟
6.windows下本地安裝svn
7.svn的基本使用
1.什麼是svn伺服器
SVN是Subversion的簡稱,是一個開放原始碼的版本控制系統,用於多個人共同開發同一個專案,共用資源的目的。vn伺服器有2種執行方式:獨立伺服器和藉助apache執行,本文是獨立伺服器的執行方式。
SVN的經典工作方式:
開始新一天的工作:
從伺服器下載專案組最新程式碼。
進入自己的分支,進行工作,每隔一個小時向伺服器自己的分支提交一次程式碼(很多人都有這個習慣。因為有時候自己對程式碼改來改去,最後又想還原到前一個小時的版本,或者看看前一個小時自己修改了哪些程式碼,就需要這樣做了)。
下班時間快到了,把自己的分支合併到伺服器主分支上,一天的工作完成,並反映給伺服器。
這就是經典的svn工作流程,從流程上看,有不少缺點,但也有優點。
SVN的幾個概念:
check out檢出獲得檔案後,檢出的檔案仍處於SVN版本控制中,與版本庫保持關聯,比如你可以進行Svn Update或者Svn Commit操作。同時匯出資料夾下有一個.svn的隱藏資料夾,儲存著一些版本的元資料資訊。(對於匯入到伺服器中的資料,需要檢出才能形成一個受svn控制的工作拷貝,才可以進行 add update commit 等操作)
export 簡單匯出一個版本的資料(把伺服器中的資料匯出來,相當於複製一份),匯出的檔案脫離SVN版本控制(匯出的就是一個檔案,與svn版本沒關係),匯出後也無法進行Update和Commit操作。匯出資料夾下沒有.svn目錄
import僅僅是把檔案匯入到svn伺服器中,而這個檔案本身還只是一個普通的檔案,與svn版本庫沒有關係
add是把新建立的檔案新增到快取區(執行後顯示一個加號),需commit提交才能真正上傳到伺服器(顯示對號)
update是把伺服器上最新的版本更新下來,比如別人上傳的版本(一般提交之前需先更新,否則別人上傳的新版本你沒有更新下來就會被覆蓋,別人上傳的就丟失了)
2.svn安裝
更新yum庫
yum update
yum方式安裝svn
yum install subversion -y 安裝svn
安裝完成後,建立svn伺服器的資料夾。
mkdir /var/svn
在svn資料夾下,建立svn庫的資料夾,並建立庫
cd /var/svn
mkdir web
svnadmin create /var/svn/web
檢視庫資料夾cd /var/svn/web,ls,會發現已經生成了一些配置檔案

3.svn配置
進入conf資料夾,有以下幾個配置檔案:

配置使用者和密碼
vim passwd
在[users]塊中新增使用者和密碼,格式:帳號=密碼,如 myname=123

配置許可權
vim authz
[groups]
group1 = liuxianan
group2 = test1,test2
[/] #目錄
@group1 = rw #使用者組的配置
@group2 = r
* = #其他使用者無許可權
test1=rw #對單一使用者的許可權配置

配置svnserve.conf
vim svnserve.conf 刪除下面的5個註釋
anon-access =read #匿名使用者可讀
auth-access =write #授權使用者可寫
password-db = passwd #使用哪個檔案作為賬號檔案
authz-db = authz #使用哪個檔案作為許可權檔案
realm =/var/svn/web # 認證空間名,版本庫所在目錄
啟動SVN服務
svnserve -d -r /var/svn
ps:關閉svn服務指令:killall svnserve,可通過ps -ef | grep svn來檢視svn服務是否執行。
4.配置svn的伺服器目錄和自動同步
建立網站/服務的目錄: (svn的程式碼要實現線上線下同步,必須先通過svn進行提交,提交後的程式碼才能同步,因此先把程式碼下載到本地,通過提交後,會自動更新到線上的目錄,這裡要建立的是線上同步目錄)
cd /web #你的網站/服務的上層目錄
svn co svn://localhost/web #localhost的根目錄是你啟動svn時指定的目錄(即/var/svn),庫資料夾是該目錄下web目錄ls #可以發現已經生成了web目錄,web目錄下有一個隱藏的.svn目錄,作為svn同步的標識
#通過post-commit鉤子指令碼實現自動同步
cd /var/svn/web/hook
cp post-commit.tmpl post-commit
編輯post-commit鉤子指令碼 vim post-commit 修改裡面的如下內容
export LANG=zh_CN.UTF-8
SVN=/usr/bin/svn #這個是安裝好的時候檢視成功與否看到的那個目錄(等號兩邊不能有空格)
WEB=/home/myweb #這個就是你每次完成提交svn自動提交到的那個目錄(等號兩邊不能有空格)
$SVN update $WEB --username myname( 你剛才設定的使用者名稱 ) --password 123( 你剛才設定的密碼) --no-auth-cache
給svn資料夾755許可權
chmod 755 -Rf /var/svn/
測試
./post-commit #測試是否可同步,打印出版本0,則成功。
5.設定svn的開機自啟
檢視 systemd 裡 svn 的配置檔案:
vim /lib/systemd/system/svnserve.service
找到svnserve的配置檔案地址:EnvironmentFile=/etc/sysconfig/svnserve #無需執行
編輯vim /etc/sysconfig/svnserve
將 OPTIONS="-r /var/svn" 改為 svn 版本庫存放的目錄,即/var/svn,:wq 儲存退出
設定開機自啟動:systemctl enable svnserve.service
重啟reboot,測試是否自啟動:ps -aux | grep svn
6.windows下本地安裝svn
進入 TortoiseSVN官網 下載安裝TortoiseSVN,並下載中文語言包。


正常安裝即可。
發現以下選項即SVN安裝成功:

選擇setting,設定語言:

7.svn的基本使用
滑鼠右鍵,點選SVN檢出,出現以下介面:

以上標紅的位置填:svn://IP/web,IP是你的伺服器IP,web是你的倉庫名(若啟動服務時設定的目錄是web倉庫目錄,則這裡無需加/web字尾)
輸入賬號的密碼,檢出成功。
進入目錄,建立幾個檔案,右鍵目錄點選更新,然後點選提交,可將檔案提交到伺服器。這時,你的伺服器剛才設計的網站目錄也會自動同步這些檔案。
完。