SVN部署與簡單使用,SVN部署簡單使用
原文發表於cu:2016-05-24
參考文檔:
svn伺服器有2種運行方式:
此文檔基於獨立伺服器部署,不依賴apache。
svn儲存版本資料也有2種方式:
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#方式1rpm -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/srctar -jxvf subversion-1.9.3.tar.bz2cd 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/aprmakemake installcd ../apr-util./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/aprmakemake install
編譯安裝
#不使用bdb方式,先行編譯時可能會有警示cd .../configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --without-berkeley-dbmakemake install
環境變數
#將svn的命令目錄加入環境變數vim /etc/profile export PATH=/usr/local/svn/bin:$PATHsource /etc/profile#或者採用軟連結的方式將svn的命令加入到環境變數中,如下ln -s /usr/local/svn/bin/* /usr/bin/
驗證
#返回版本資訊即成功svnserve --version
3. 部署svn建立版本庫
#建立倉庫根目錄mkdir -p /svn#建立版本庫svntest,如果有多重專案可建多個版本庫mkdir -p /svn/svntestsvnadmin 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 = write27 password-db = passwd36 authz-db = authz47 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#停止svnkillall svnserve
開機啟動svn
# 注意修改shell中的相關設定,如變數SVN_HOME,連接埠等# 請不要刪除# chkconfig: - 85 15與# description: svn server,否則無法使用chkconfig加入服務,會提示service svn does not support chkconfigvim /etc/rc.d/init.d/svn#!/bin/bash# chkconfig: - 85 15# description: svn serverSVN_HOME=/svnif [ ! -f "/usr/local/svn/bin/svnserve" ]thenecho "svnserver startup: cannot start"exitficase "$1" instart)echo "Starting svnserve…"/usr/local/svn/bin/svnserve -d --listen-port 5690 -r $SVN_HOMEecho "Finished!";;stop)echo "Stoping svnserve…"killall svnserveecho "Finished!";;restart)$0 stop$0 start;;*)echo "Usage: svn { start | stop | restart } "exit 1esac#賦予啟動指令碼許可權chmod 755 /etc/rc.d/init.d/svnchkconfig --add svnchkconfig --level 35 svn on#也可以簡單處置,如編輯rc.local檔案vim /etc/rc.d/rc.local/usr/local/svn/bin/svnserve -d –listen-port 5690 -r /svniptables
#開啟相應的連接埠,儲存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提交。