1.檢查是否已安裝
rpm -qa | grep subversion
如果要卸載舊版本:
yum remove subversion
2.安裝
yum install subversion
3.檢查是否安裝成功
svnserve --version (如果安裝成功會輸出版本號)
4.創建倉庫目錄
比如,創建倉庫 /home/guoke/svn 為svn倉庫所要創建到的目錄
cd /home
mkdir guoke
svnadmin create /home/guoke/svn
執行了上面的命令之后會在 /home/guoke/svn 目錄下生成如下圖這些文件
5.進入 conf 目錄(該svn版本庫配置文件)
cd /home/guoke/svn/conf/
ll
authz 文件是權限控制文件
passwd 文件是帳號密碼文件
svnserve.conf 文件是SVN服務配置文件
6.設置帳號密碼
vim /home/guoke/svn/conf/passwd
在[users]塊中添加用戶和密碼,格式:帳號=密碼,如 lab505=654321
7.修改 svnserve.conf 文件
刪除下面的幾個的命令的注釋符號:(注意:命令前面不能留有空格,否則會出錯)
anon-access = read # 匿名用戶可讀,改成none,禁止匿名訪問
auth-access = write # 授權用戶可寫
password-db = passwd # 使用哪個文件作為賬號文件
authz-db = authz # 使用哪個文件作為權限文件

8.修改配置 authz 文件
vim /home/guoke/svn/conf/authz
這里面配置不同項目不同目錄中,不同賬號的權限。
以下配置是 lab505 用戶對svn項目有讀寫權限,其他賬號無訪問權限(注意:一定要在 lab505=rw 前添加 [/],表示可以對哪個文件夾進行讀寫,這里是根目錄,否則向svn取文件的時候會出現 authorization failed 錯誤,切記切記!!!)
[groups]
[/]
lab505=rw
9.修改svnserve的配置文件,指定版本庫的路徑
vim /etc/sysconfig/svnserve
默認:OPTIONS="-r /var/svn"
修改成:OPTIONS="-r /home/guoke/svn"
保存退出!
10.啟動 SVN
systemctl start svnserve
# 加入開機自啟動
systemctl enable svnserve
# 查看SVN狀態
systemctl status svnserve
# 也可以啟動指定的SVN版本庫
svnserve -d -r /home/guoke/svn
svnserve 命令的描述和用法如下。
描述:SVN服務器程序
用法:svnserve [選項]
選項:-d # 以守護進程方式運行svnserve(作為一個服務程序運行在后台)
-r # 為版本庫指定一個虛擬路徑,默認客戶端要指定絕對路徑訪問庫
--listen-port=port # 指定監聽的端口,默認監聽端口號為3690
11.放通SVN的默認端口3690
firewall-cmd --zone=public --add-port=3690/tcp --permanent
firewall-cmd --reload
12.關閉SELinux
vim /etc/selinux/config
默認:SELINUX=enforcing
修改成:SELINUX=disabled
保存退出,並重啟系統,SELinux才會生效
系統重啟后,查看SELinux的狀態
getenforce
13.TortoiseSVN客戶端連接測試
首先安裝SVN客戶端,Windows系統一般選擇烏龜客戶端 https://tortoisesvn.net/downloads.html
使用TortoiseSVN客戶端新人使用指南 http://blog.csdn.net/maplejaw_/article/details/52874348
輸入版本庫URL svn://xxx.xxx.xxx.xxx:3690/ 單擊確定后,彈出對話框輸入前面設置的用戶名和密碼,單擊確定,就可以成功檢出svn服務目錄下的文件。
檢出成功!
14.檢查進程和監聽端口(svn服務器默認端口是3690)
ps -ef | grep svn
netstat -antlp | grep 3690
15.總結
出現問題基本都是以下三個配置文件的問題,下面把這些文件列出來
1、文件svnserve.conf:
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /home/guoke/svn
2、文件passwd:
[users]
lab505 = 654321
3、文件authz:
[groups]
[/]
lab505 = rw
出現authorization failed異常,一般都是authz文件里,用戶組或者用戶權限沒有配置好,只要設置 [/] 就可以,代表根目錄下所有的資源,如果要限定資源,可以加上子目錄即可。
上傳的文件放在SVN服務器的哪個目錄下?
SVN服務器版本庫有兩種格式,一種為FSFS,一種為BDB把文件上傳到SVN版本庫后,上傳的文件不再以文件原來的格式存儲,而是被svn以它自定義的格式壓縮成版本庫數據,存放在版本庫中。如果是FSFS格式,這些數據存放在版本庫的db目錄中,里面的revs和revprops分別存放着每次提交的差異數據和日志等信息。
目前用的最多的是FSFS方式,這種方式的話,一般是存儲在\db\revs文件夾下,里面有一堆以版本號命名的文件,如:0、1、2、3、4......,那個就是了。svn先把0版本的狀態壓縮成1個文件,然后每次版本更新時就針對變動的部分做一個壓縮文件,每次都是增加一個增量包,最后在服務器上能看到文件名為從0開始到最終版本的一系列文件。
SVN是 Subversion 的簡稱,是一個開放源代碼的版本控制系統,相較於RCS、CVS,它采用了分支管理系統,它的設計目標就是取代CVS。互聯網上很多版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用於多個人共同開發同一個項目,共用資源的目的。