linux 搭建svn服務器

一:安裝svnlinux

yum install -y subversion

二:建立倉庫
1:建立倉庫目錄windows

mkdir -p /var/project/test

2:建立倉庫服務器

svnadmin create /var/project/test

建立成功後,在/var/project/test目錄下以下目錄:tcp

drwxr-xr-x. 2 root root   51 1月  30 13:26 conf
drwxr-sr-x. 6 root root 4096 1月  30 13:26 db
-r--r--r--. 1 root root    2 1月  30 13:26 format
drwxr-xr-x. 2 root root 4096 1月  30 13:26 hooks
drwxr-xr-x. 2 root root   39 1月  30 13:26 locks
-rw-r--r--. 1 root root  229 1月  30 13:26 README.txt

conf目錄下是svn的配置目錄,其中包括:svn

-rw-r--r--. 1 root root 1080 1月  30 13:26 authz            #權限控制
-rw-r--r--. 1 root root  309 1月  30 13:26 passwd           #密碼管理
-rw-r--r--. 1 root root 3090 1月  30 13:26 svnserve.conf        #SVN服務進程配置

三:svn配置
1:權限配置(/var/project/test/conf/authz)post

#用戶分組(admin->管理員,development ->開發 other->其餘)
[groups]
admin = test1    #管理員用戶test1
development = test2,test3    #開發用戶test2,test3
other = test4,test5,test6        #其餘用戶test4,,test5,test6
#權限配置
[/]
@admin = rw    #管理員讀寫權限
@development = rw    #開發讀寫權限
@other = r                #其餘讀權限
test7 = rw                #test7用戶讀寫權限

2:密碼配置(/var/project/test/conf/passwd)編碼

#密碼配置,格式爲用戶名=密碼,密碼爲明文
[users]
test1 = test1
test2 = test2
test3 = test3
test4 = test4
test5 = test5
test6 = test6
test7 = test7

3:SVN服務進程配置(/var/project/test/conf/svnserve.conf)spa

[general]
anon-access = none      #匿名用戶無權訪問
auth-access = write     #認證用戶可讀寫
password-db = passwd    #指定用戶認證密碼文件
authz-db = authz        #指定權限配置文件

四:啓動svn服務(默認端口號3690)code

svnserve -d -r /var/project    #-d 服務後臺運行 -r 指定工做目錄,/var/project表示指定工做目錄,注意不能指定倉庫名地址(/var/project/test)

指定端口啓動svnorm

svnserve -d -r /var/project --listen-port 3691

五:關閉防火牆,或開啓指定端口號
1:關閉防火牆

systemctl stop firewalld

2:開啓指定防火牆

#開啓3690端口
firewall-cmd --zone=public --add-port=3690/tcp --permanent
#刷新配置
firewall-cmd --reload

六:客戶端鏈接並上傳文件
windows上鍊接svn
1:新建一個目錄,右擊選擇svn 檢出

clipboard.png
2:在版本庫上填寫linux的svn地址 svn://ip:3690/倉庫名 (這裏的倉庫名不是/var/project/test而是/test)

clipboard.png
2:填寫用戶名密碼
clipboard.png
這時候咱們能夠看到此目錄下生成了一個.svn文件,說明咱們已經鏈接上了linux上的svn服務器
3:上傳文件
如今咱們新建一個test.txt文件,在裏面隨便填一些信息
(1)右擊選擇add
clipboard.png
而後選擇test.txt文件,點擊肯定,這時候咱們會看到test.txt文件上會多了一個加號
clipboard.png
(2):上傳
右擊選擇提交
clipboard.png
填寫備註選擇要上傳的文件後點擊肯定
clipboard.png
這時候咱們能夠看到test.txt文件上的加號會變成綠色的對號,表示上傳成功
clipboard.png
可是這時候咱們發現咱們在/var/project/test目錄下根本就沒有找到咱們上傳的文件,這是爲何呢?難道咱們沒有上傳成功,
這是因爲把文件上傳到SVN版本庫後,上傳的文件再也不以文件原來的格式存儲,而是被svn以它自定義的格式壓縮成版本庫數據,存放在版本庫中,svn服務器版本庫有兩種格式,一種爲FSFS,一種爲BDB
這時候咱們就須要在linux中實現檢出
4:檢出

svn checkout svn://192.168.11.201/test /data/test #svn://192.168.11.201/test表示須要檢出的倉庫地址 /data/test表示須要檢出到哪一個目錄下

clipboard.png
這是咱們能夠在/data/test目錄下看到咱們以前在客戶端上傳的文件,可是如今問題又來了,咱們在客戶端上傳文件以後,不可能每次都在服務器進行檢出操做吧,那麼如何進行自動檢出呢?
5:自動檢出配置
在/var/project/test/hooks目錄下新建一個post-commit文件,post-commit文件添加內容爲:

#!/bin/sh
REPOS="$1"            #倉庫
REV="$2"                #版本號
export.UTF-8           #編碼
SVN=/usr/bin/svn   #svn地址
WEB=/data/test    #要更新的項目目錄
$SVN update $WEB --username test1 --password test1  #--username test1表示設置用戶名  --password test1表示設置密碼

將post-commit設置爲可執行

chmod +x /var/project/test/hooks/post-commit

到此自動檢出配置完成,不過注意,第一次的時候須要手動檢出,以後就不須要了,到此linux搭建svn服務器完成

相關文章
相關標籤/搜索