簡介
subversion(簡稱svn)是近年來崛起的版本管理軟件系統,是cvs的接班人。目前,絕大多數開源軟件都使用svn做爲代碼版本管理軟件。
Subversion是一個版本控制系統,相對於的RCS、CVS,採用了分支管理系統,它的設計目標就是取代CVS。互聯網上免費的版本控制服務多基於Subversion。sql
1、所需軟件環境檢查:
1.apr apr-util zlib 這幾個軟件請參閱《LAMP基礎環境搭建》中的安裝路徑或安裝方法。
2.還須要SQLite
SQLite,是一款輕型的數據庫,是遵照ACID的關聯式數據庫管理系統,它的設計目標是嵌入式的,並且目前已經在不少嵌入式產品中使用了它,它佔用資源很是的低,在嵌入式設備中,可能只須要幾百K的內存就夠了。
而SQLite的使用方案有兩種:
方案一:能夠只解壓sqlite-amalgamation包,將解壓文件拷貝到subversion解壓後的源碼安裝目錄中去。
官方解釋:This ZIP archive contains all C source code for SQLite 3.8.1 combined into a single source file.
譯:這個zip文件是融合了SQLite 3.8.1全部C源代碼的單一文件。
換句話說:它只是源文件,沒有配置安裝文件,因此不能用來完整安裝。數據庫
方案二:安裝Sqlite數據庫完整軟件包,在編譯subversion時加上 --with-sqlite=/usr/local/sqlite/ 選項
官方解釋:A tarball containing the amalgamation for SQLite 3.8.1 together with an configure script and makefile for building it.
譯:一個融合了SQLite 3.8.1源代碼,幷包含配置腳本configure及編譯文件makefile的打包文件。
換句話說:這個源碼包是能夠按常規步驟編譯安裝的。windows
2、執行安裝(兩安裝方案任選其一)緩存
方案一:能夠只解壓sqlite-amalgamation包,將解壓文件拷貝到subversion解壓後的源碼安裝目錄中去。
A.解壓 sqlite-amalgamation 源碼包
# unzip sqlite-amalgamation-3080100.zip服務器
B.解壓 subversion 軟件包:
# tar -zxvf subversion-1.8.4.tar.gzsvn
C.拷貝 sqlite-amalgamation 源碼包到 subversion 解壓包中,並改名爲sqlite-amalgamation
注:假定sqlite包與subversion包是解壓在同級目錄的。
# cp -r ./sqlite-amalgamation-3080100 ./subversion-1.8.4/sqlite-amalgamation測試
D.進入subversion解壓目錄,配置編譯
# cd subversion-1.8.4
# ./configure --prefix=/usr/local/subversion/ --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/ --with-zlib=/usr/local/zlib/ --enable-maintainer-mode
# make
# make installui
方案二:安裝Sqlite數據庫完整軟件包,在編譯 subversion 時加上 --with-sqlite=/usr/local/sqlite/ 選項操作系統
注1: 確認已安裝apr apr-util zlib軟件包 此處略述... 請參閱《LAMP基礎環境搭建》
注2: 關於Sqlite數據庫安裝方法,此處略述... 請參閱《sqlite數據庫安裝配置》設計
# tar -zxvf subversion-1.8.4.tar.gz && cd subversion-1.8.4
# ./configure --prefix=/usr/local/subversion/ --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/ --with-zlib=/usr/local/zlib/ --with-sqlite=/usr/local/sqlite/ --enable-maintainer-mode
選項解析
--prefix=/usr/local/subversion/ 指定subversion要安裝的目錄
--with-apr=/usr/local/apr-httpd/ 指定apr對應安裝目錄
--with-apr-util=/usr/local/apr-util-httpd/ 指定apr-util對應安裝目錄
--with-zlib=/usr/local/zlib/ 指定zlib對應安裝目錄
--with-sqlite=/usr/local/sqlite/ 指定sqlite對應安裝目錄
--enable-maintainer-mode 啓用調試提醒模式
# make
# make install
3、測試是否安裝成功(若是看到版本信息說明成功)
# /usr/local/subversion/bin/svnserve --version
4、能夠將SVN相關命令添加到環境變量搜索路徑
# echo "# 添加subversion環境變量:" >> /etc/profile
# echo "PATH=$PATH:/usr/local/subversion/bin" >> /etc/profile
# export PATH
# source /etc/profile
5、配置subversion
1.創建版本庫總目錄: /opt/mySVNdata(目錄位置能夠自定)
# mkdir -p /opt/mySVNdata 版本庫總目錄
2.在版本庫目錄中 建立第1個「項目版本庫」命名爲:martinZFsvn ;第2個爲項目命名爲:martinTP
# svnadmin create /opt/mySVNdata/martinZFsvn //第1個項目
# svnadmin create /opt/mySVNdata/martinTP //第2個項目
注:版本庫不一樣於通常的文件夾, 直接在操做系統上新建文件沒法被SVN識別, 必須使用import命令將文件導入版本庫。此爲svn內部指令,create用於新建版本庫。請使用svn help查看詳細使用說明。
3.編輯新建的「項目版本庫 martinZFsvn 」的配置文件 svnserve.conf
「項目版本庫 martinZFsvn 」建立生成時,會在其目錄下一同建立:conf db ...幾個文件,conf爲配置文件目錄。
# vi /opt/mySVNdata/martinZFsvn/conf/svnserve.conf
參考約第19 20行,添加:
anon-access = none # 設置非受權用戶沒法訪問
auth-access = write # 設置受權用戶有寫權限
參考約第29行,添加:
password-db = passwd # 指定用於存放用戶/密碼的配置文件名(在conf目錄中,也能夠本身改名)
參考約第39行,添加:
authz-db = authz # 指定用於存放權限控制的文件名(在conf目錄中,也能夠本身改名)
參考約第51行,添加:
realm = realm_martinZFsvn # 認證命名空間,subversion會在認證提示裏顯示,而且做爲憑證緩存的關鍵字
官方解釋:指定了Repository的驗證領域。若是兩個Repository有相同的驗證領域,那麼它們應該有相同的密碼數據庫,反之亦然。默認的領域就是指向當前的Repository的路徑,與服務器的Repository的根目錄相關。
4.編輯用戶/密碼配置文件 passwd ,並添加用戶
# vi /opt/mySVNdata/martinZFsvn/conf/passwd
在[users]裏添加幾個用戶及對應密碼,如:
[users]
martin1 = 12345
martin2 = 123456
grptest1 = 123
grptest2 = 456
5.編輯權限配置文件 authz ,對用戶受權
# vi /opt/mySVNdata/martinZFsvn/conf/authz
A.若是想對用戶分組管理:
在組區塊[groups]添加:
group1 = grptest1,grptest2 # 好比組名爲group1;多個組成員用逗號分割(如:grptest1,grptest2)
B.在最末尾添加:
[/] [/]表示對項目的根目錄設置權限
martin1 = r 讀
martin2 = rw 讀寫
@group1 = rw 讀【對組受權要加 @】
注:只讀r,寫w;沒有列出的用戶沒有任何權限,不容許訪問;
C.也可單獨對項目根下的某個目錄設置權限:
[/db_config] [/db_config]表示項目根目錄下的「db_config」文件夾的設置權限
@group1 = r 讀【對組受權要加 @】
注:「db_config」這個文件件怎麼建立?這是在SVN服務器配置好以後,讓一個權限很高的用戶在客戶端登陸SVN,而後建立此目錄。
經過上面配置達到目的: A.martin1對根下全部目錄有r權限;
B.martin2對根下全部目錄有rw權限;
C.group1組成員對根下全部目錄有rw權限,但對/db_config只有r權限;
6、啓動svn服務
# /usr/local/subversion/bin/svnserve -d -r /opt/mySVNdata
選項解析:
--listen-port=3690 3690是默認端口,可使用「--listen-port=3690」 來顯式指定其它端口。
-d 指明以守護模式運行(後臺運行),
-r 選項用來指定svn服務的根目錄,這樣用戶就可使用相對路徑訪問(svn://192.168.1.xx/martinZFsvn),而不用提供完整路徑(svn://192.168.1.xx/opt/mySVNdata/martinZFsvn)
/opt/mySVNdata 是版本庫目錄(絕對路徑)
查看狀態:
# ps -le | grep svnserve
# netstat -tunpl | grep svnserve
設置隨系統自啓動:
# echo "# subversion隨系統自啓動:" >> /etc/rc.d/rc.local
# echo "/usr/local/subversion/bin/svnserve -d -r /opt/mySVNdata" >> /etc/rc.d/rc.local
關閉svn服務
# killall svnserve
7、windows客戶端鏈接 svn://192.168.1.xx/martinZFsvn # 訪問第1個項目 svn://192.168.1.xx/martinTP # 訪問第2個項目