SVN部署與簡單使用


原文發表於cu:2016-05-24

參考文檔:

  1. http://www.tuicool.com/articles/Yv2iyu7
  2. http://www.centoscn.com/CentosServer/ftp/2013/1217/2244.html
  3. http://sxlkk.iteye.com/blog/2264819
  4. http://blog.csdn.net/fax5201314/article/details/38020547

 svn服務器有2種運行方式:

  1. 獨立服務器; (例如:svn://x.x.x.x/xxx)
  2. 借助apache(例如:http://x.x.x.x/xxx)

此文檔基於獨立服務器部署,不依賴apache

 

svn存儲版本數據也有2種方式:

  1. BDB
  2. FSFS

BDB方式在服務器中斷時,有鎖住數據的可能,FSFS方式相對安全,本文檔部署FSFS模式。

一.環境

Server: CentOS-6.7-x86_64

Server IP: 172.18.11.212

Client: Win7 x86_64

二.軟件獲取

Server

Subversion官網:http://subversion.apache.org/

1.9.3版本下載:http://apache.fayea.com/subversion/subversion-1.9.3.tar.bz2

Client

TortoiseSVN官網:http://tortoisesvn.tigris.org/

1.9.3 x86_64位置版本下載:http://netix.dl.sourceforge.net/project/tortoisesvn/1.9.3/Application/TortoiseSVN-1.9.3.27038-x64-svn-1.9.3.msi

中文語言包(版本必須匹配,否則語言包不生效,客戶端設置中找不到):

http://pilotfiber.dl.sourceforge.net/project/tortoisesvn/1.9.3/Language%20Packs/LanguagePack_1.9.3.27038-x64-zh_CN.msi 

三.安裝svn 

1. 准備

系統檢查

#查看服務器系統是否已經安裝svn
#方式1
rpm -qa | grep subversion

#方式2,查看是否有執行文件
ll /usr/bin/svn* 

#方式3,如果有執行文件,查看版本
svnserve –version

依賴包

常規編譯包

yum install autoconf libtool gcc gcc-c++ -y

openssl(optional)

#openssl主要在客戶機上通過serf使用或在apache服務器使用。
#檢測
find / -name opensslv.h

#如果找不到可以進行yum安裝或源碼安裝(略)
yum install openssl openssl-devel –y

安裝之后找到opensslv.h的所在目錄,編譯svn時使用" --with-openssl="帶上路徑。

zlib(必需)

#zlib主要用作svn的二進制差異算法,算法取決於zlib壓縮。
#檢測
rpm qa | grep zlib*

#如果找不到可以進行yum安裝或源碼安裝(http://zlib.net/,也可通過svn解壓后的腳本獲得)
yum install zlib zlib-devel –y

編譯svn時使用" --with-zlib="帶上路徑(針對非默認路徑的源碼安裝)。

2. 安裝svn

解壓

#將下載的subversion-1.9.3.tar.bz2放置於/usr/local/src目錄,
cd /usr/local/src
tar -jxvf subversion-1.9.3.tar.bz2
cd subversion-1.9.3

配套依賴包

#在subversion-1.9.3目錄內有1個可執行腳本get-deps.sh,可以下載版本相關的依賴包;
#執行之后subversion-1.9.3文件夾多出了apr,apr-util,zlib,serf(與客戶端通過apache服務訪問svn相關),sqlite-amalgamation等文件夾,其中apr,apr-util,zlib是subversion必需依賴包,系統中可能已安裝,但版本可能不匹配(尤其是apr,apr-util,所以使用此腳本下載的依賴包最佳)。
./get-deps.sh

apr/apr-util

cd apr
./configure --prefix=/usr/local/apr
make
make install

cd ../apr-util
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install

編譯安裝

#不使用bdb方式,預編譯時可能會有告警
cd ..
./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --without-berkeley-db
make
make install

環境變量

#將svn的命令目錄加入環境變量
vim /etc/profile

 export PATH=/usr/local/svn/bin:$PATH

source /etc/profile

#或者采用軟鏈接的方式將svn的命令加入到環境變量中,如下
ln -s /usr/local/svn/bin/* /usr/bin/

驗證

#返回版本信息即成功
svnserve --version

3. 部署svn

創建版本庫

#創建倉庫根目錄
mkdir -p /svn

#創建版本庫svntest,如果有多個項目可建多個版本庫
mkdir -p /svn/svntest
svnadmin create /svn/svntest

版本配置庫文件

#版本庫svntest的配置文件目錄
cd /svn/svntest/conf/

vim svnserve.conf
#取消general項目下如下幾行的注釋;注意:每一行的都要頂頭,不能有空格,否則報錯
#27/36/47行可以使用相對路徑(passwd/authz默認為版本庫conf下文件,svntest為版本庫svntest根目錄),也可以指定絕對路徑
19 anon-access = none                #必須設置,否則所有用戶不用密碼就可以訪問
20 auth-access = write
27 password-db = passwd
36 authz-db = authz
47 realm = svntest

用戶配置文件

cd /svn/svntest/conf/

vim passwd

[users] # harry = harryssecret
# sally = sallyssecret

#設置登錄賬號與密碼
#對用戶配置文件的修改立即生效,不需要重啟服務
testuser = testsecret

權限配置文件

#除如下修改外,默認配置可不變
cd /svn/svntest/conf/

vim authz
#設置admin組,用戶testuser加入admin組,1個用戶組可含多個用戶,用逗號隔離
[groups]
admin = testuser

#設置admin組對版本庫svntest根目錄及以下有讀寫權限,也可以針對單個用戶設置,如 testuser = rw
[svntest:/]
@admin = rw

#權限配置文件中的賬戶必須已在用戶配置文件中定義,對權限配置文件的修改立即生效,不需要重啟svn服務

authz文件語法

用戶組格式

[groups]

= ,

其中,1個用戶組可以包含1個或多個用戶,用戶間以逗號分隔

版本庫目錄格式

[<版本庫>:/項目/目錄]

@<用戶組名> = <權限>

<用戶名> = <權限>

其中,方框號內部分可以有多種寫法:

[/],表示根目錄及以下,根目錄在svnserve啟動時指定的,[/]表示對倉庫根目錄有設置權限;

[版本庫:/] 表示對版本庫xxx設置權限,如上文指定的svntest版本庫;

[版本庫:/項目] 表示對版本庫xxx中的某項目設置權限;

[版本庫:/項目/目錄] 表示對版本庫xxx中的某項目的某目錄設置權限;

權限主體可以是用戶組、用戶或*,用戶組在前面加@,*表示全部用戶;

權限可以是w、r、wr和空,空表示沒有任何權限

啟動svn

# -d表示以daemon方式運行;
# --listen-port指定監控端口,不指定時默認是3690端口,通過端口可開啟多個svn庫;
# -r指定倉庫根目錄,注意不是某版本庫根目錄,根目錄的設置與客戶端登錄地址有關聯,如果設置不當,可能會導致登錄的諸多問題
svnserve -d --listen-port 5690 -r /svn/

#驗證
ps aux | grep svn

#停止svn
killall svnserve

開機啟動svn 

# 注意修改shell中的相關設置,如變量SVN_HOME,端口等
# 請不要刪除# chkconfig: - 85 15與# description: svn server,否則無法使用chkconfig加入服務,會提示service svn does not support chkconfig
vim /etc/rc.d/init.d/svn

#!/bin/bash
# chkconfig: - 85 15
# description: svn server

SVN_HOME=/svn
if [ ! -f "/usr/local/svn/bin/svnserve" ]
then
echo "svnserver startup: cannot start"
exit
fi
case "$1" in
start)
echo "Starting svnserve…"
/usr/local/svn/bin/svnserve -d --listen-port 5690 -r $SVN_HOME
echo "Finished!"
;;
stop)
echo "Stoping svnserve…"
killall svnserve
echo "Finished!"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: svn { start | stop | restart } "
exit 1
esac

#賦予啟動腳本權限
chmod 755 /etc/rc.d/init.d/svn
chkconfig --add svn
chkconfig --level 35 svn on

#也可以簡單處置,如編輯rc.local文件
vim /etc/rc.d/rc.local
/usr/local/svn/bin/svnserve -d –listen-port 5690 -r /svn

iptables

#打開相應的端口,保存iptables設置
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5690 -j ACCEPT
/etc/rc.d/init.d/iptables save

四.客戶端TortoiseSVN

安裝TortoiseSVN客戶端及語言包,訪問路徑svn://ip:port。

以下是簡單的使用教程。

數據導入

選擇本地需要導入到服務器端的文件目錄,,右鍵—>TortoiseSVN導入,如下:

輸入版本庫地址,

 首次使用需要輸入用戶名/密碼,

數據檢出

選擇需要檢出的目錄,鼠標右鍵,SVN檢出 -->導出

 填寫導出版本庫URL與需要導出的目錄,

更新與提交

如果版本有更新,選擇相應的目錄,右鍵-->SVN更新;

如果本地做了更改,需要上傳到服務器,選擇相應的目錄,右鍵-->SVN提交。

建議每次本地要做更新提交時,先SVN更新到服務器端最新版本,在最新版本上做本地修改再提交。

添加文件/目錄

如果在檢出目錄內新增了文件/目錄,需要先添加,再SVN提交到版本庫,如下,

 如添加的文件符號變更如下,然后才能SVN提交到版本庫。

刪除文件/目錄

如果需要刪除服務器端文件/目錄,不能使用本地刪除,對刪除的文件/目錄,右鍵-->TortoiseSVN-->刪除,回到上級目錄,SVN提交


免責聲明!

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



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