多年來,并發(fā)版本系統(CVS)一直是在Linux上管理代碼或者文本的標準。作為基于RCS上建立但卻允許多用戶協作的系統而言,CVS記錄所有文件的修改信息。這對于程序開發(fā)者、網絡設計者和系統管理員而言,是非常有用的。
然而,CVS逐漸顯示出它的衰老,出現了相似的源代碼管理軟件。然而大多這種東西都是以牟利為主要目的的。
Subversion是一種相對新鮮的源代碼管理系統。雖然事實上它還在不斷的反展之中,但是Subversion已經是一個非常穩(wěn)定而且成熟的產品。它是一個全新的系統,其功能可以和CVS媲美,同時,它要比CVS更直觀,更容易操作。本文Subversion的安裝和一些特殊功能作一個介紹。
安裝服務器端
下載Apache和SVN源碼包
從官方網站臺下載httpd-2.0.52.tar.gz,subversion-1.1.1.tar.gz
(因為redhat 9默認安裝的Apache沒有并包含--enable-so選項,所以無法產生mod_dav_svn.沒有這個模塊,SVN無法采用http方式運行,所以必須重新編譯新的Apache)
以root身份執(zhí)行:
#tar zxvf httpd-2.0.52.tar.gz
#cd httpd-2.0.52
#./configure --enable-dav --enable-so --enable-maintainer-mode
#make
#make install
此時會產生/usr/local/apache2目錄,接著執(zhí)行:
#tar zxvf subversion-1.1.1.tar.gz
#./configure --with-apxs=/usr/local/apache2/bin/apxs
# rm /usr/local/lib/libsvn*
# make clean && make && make install
此時會自動在/usr/local/apache2/conf/httpd.conf添加
LoadModule dav_svn_module modules/mod_dav_svn.so
安裝完成后,運行svnserver --version確認版本為1.1.1。
SVN服務器安裝結束.
安裝客戶機端
window客戶機:
直接安裝TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi,方法同一般軟件安裝相同。
Linux客戶機:
方法輿安裝服務器相同。
(注意redhat 9默認安裝的SVN版本為0.17.1,它的客戶端命令svn無法輿新的SVN服務器通訊,必須重新安裝)
建立倉庫Repository
Subversion 的檔案庫是個中央倉儲, 用來存放任意數量項目的受版本控管資料,建立方法很簡單
#svnadmin create path/to/repos
舉個例子:
#svnadmin create /home/mysvn
#chown –R nobody /home/mysvn
運行服務器
Subversion服務器有兩種運行方式,一是可以作為Apache 2.0的一個模塊, 以WebDAV/DeltaV協議與外界連通;另外,也可使用Subversion 自帶的小型服務器程序svnserve。該程序使用的是自帶的通訊協議,可以很容易地透過SSH以
以http方式運行
在/usr/local/apache2/conf/httpd.conf中加入:
<Location /svn/repository>
DAV svn
SVNPath /home/mysvn
</Location>
在服務器的瀏覽器中輸入網址:
http://localhost/svn/repository/
這時候,你會看到這樣的顯示:
這表明服務器已經以http方式正常運行了.
以svnserve方式運行
這種方式的運行又可以分為以下兩種(這和vsftp有些相似)
1) standalone mode
直接運行 #svnserve –d
運行 lsof -i :3690可以看到SVN服務器已經在運行
2) x.netd mode
在/etc/xinetd.d/下生成svnserve文件,內容如下
service svnserve
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = apache
server = /usr/local/bin/svnserve
server_args = -i
}
編輯 /etc/services ?,加入底下兩行:
svnserve 3690/tcp # Subversion svnserve
svnserve 3690/udp # Subversion svnserve
重啟xinetd服務,運行 lsof -i :3690可以看到SVN服務器已經在運行
客戶機訪問
客戶機的訪問方法輿服務器的運行方式有直接關系
window客戶機:
1) 服務器以http方式運行
安裝完TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi后,在你想工作的目錄下點擊右鍵,執(zhí)行checkout,按上圖輸入即可。
2) 服務器以svnserve方式運行
同上的區(qū)別只是URL of repository變?yōu)?svn://svn服務器ip/home/mysvn
或者 svn+ssh://svn服務器ip/home/mysvn
(注意不是//svn服務器ip//svn/repository)
linux客戶機:
1) 服務器以http方式運行
執(zhí)行 #svn checkout http: //svn服務器ip/svn/repository
2) 服務器以svnserve方式運行
執(zhí)行 #svn checkout svn://svn服務器ip/home/mysvn
或者 #svn checkout svn+ssh://svn服務器ip/home/mysvn
客戶認證機制
這輿服務器的運行方式有關
服務器以http方式運行
比如我們想給 Sally 與 Harry 送交存取檔案庫的權限. 首先, 我們必須把它們加入到密碼檔案.
# ### 第一次: 以 -c 建立檔案
# htpasswd -c /etc/svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
# htpasswd /etc/svn-auth-file sally
New password: *******
Re-type new password: *******
Adding password for user sally
#
接著,在/usr/local/apache2/conf/httpd.conf的加入:
<Location /svn/repository >
DAV svn
SVNPath /home/mycvs
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>