一、首先,介紹一下SVN 。更多資料(百度百科SVN)
subversion(以下簡稱svn)是近年來崛起的版本管理工具,是cvs的接班人。
svn伺服器有2種運作方式:獨立伺服器和借助apache。2種方式各有利弊。
svn存儲版本資料也有2種方式:BDB和FSFS。因為BDB方式在伺服器中斷時,有可能鎖住資料,是以還是FSFS方式更安全一點。
二、配置過程
我第一天配置借助apach方式,完成後可以通過浏覽器http協定通路,可是在Myeclipse中總是連接配接不到svnserver。無奈之下,第二天重新以svnserve方式配置,最終成功,哈哈,下面主要說說svnserve方式的配置。
1. svn伺服器安裝
以root使用者登入,安裝包擷取(/root路徑下):
subversion 1.6.2 .tar.gz subversion-deps-1.6.2.tar.gz。
指令行運作(本文以#開頭行都為指令行執行):
#tar xfvz subversion-1.6.2 .tar.gz
#tar xfvz subversion-deps-11.6.2 .tar.gz
解壓後他們都在subversion-1.6.2 這個檔案夾下
#cd subversion-1.6.2
#./configure
#make clean
#make
#make install
預設安裝在/usr/local 你也可以用 ./configure –prefix = /xxx/xxx 來指定安裝路徑。
運作make clean成功,運作make 出現錯誤:
krb5.h: No such file or directory (PC Linux)
/usr/include/openssl/kssl.h:169: syntax error before "enctype"
In file included from spamc/utils.h:28,
from spamc/libspamc.c:20:
/usr/include/openssl/ssl.h:909: syntax error before "KSSL_CTX"
/usr/include/openssl/ssl.h:931: syntax error before '}' token
In file included from /usr/include/openssl/ssl.h:179,
from spamc/utils.h:28,
from spamc/utils.c:40:
/usr/include/openssl/kssl.h:72:18: krb5.h: No such file or directory
In file included from /usr/include/openssl/ssl.h:179,
from spamc/utils.h:28,
from spamc/utils.c:40:
/usr/include/openssl/kssl.h:134: syntax error before "krb5_enctype"
/usr/include/openssl/kssl.h:136: syntax error before '*' token
/usr/include/openssl/kssl.h:137: syntax error before '}' token
/usr/include/openssl/kssl.h:149: syntax error before "kssl_ctx_setstring"
/usr/include/openssl/kssl.h:149: syntax error before '*' token
/usr/include/openssl/kssl.h:150: syntax error before '*' token
編譯問題
這是因為 Red Hat Linux 的 krb5-devel 套件把 kerberos 的 include file 放到了 /usr/kerberos/include 裡面,而不是一般位置的 /usr/include 這個目錄。而 openssl 支援 kerberos,是以在 compile 使用到 openssl 的程式就很容易發生找不到 kerberos 的 include file 的錯誤。
解決方法
解決的辦法相當簡單,首先當然要确定 krb5-devel 以及 krb5-libs 等套件确實有安裝在系統上,而不是根本沒安裝;接下來,建立以下的 symbolic links:
# ln -s /usr/kerberos/include/com_err.h /usr/include/
# ln -s /usr/kerberos/include/profile.h /usr/include/
# ln -s /usr/kerberos/include/krb5.h /usr/include/
之後,make,make install運作順利,安裝成功。
測試一下:
#svnserve –version
如果顯示如下,安裝成功:
svnserve, version 1.6.2
……(省略多行)
* fs_fs : Module for working with a plain file (FSFS) repository.
2.建立SVN版本庫
//建立庫檔案所在的目錄
# mkdir /home/svnroot/repository
//建立倉庫"test",指定資料存儲為 FSFS,如果要指定為 Berkeley DB,則将 fsfs 替換為 bdb
# /usr/local/subversion/bin/svnadmin create --fs-type fsfs /home/svnroot/repository/test
3.配置版本庫
1)修改版本庫配置檔案(可以使用vi 或者gedit等修改):
/home/svnroot/repository/test/conf/svnserve.conf
内容修改為:
[general]
anon-access = none
auth-access = write
password-db =passwd
authz-db = authz
realm = repos
其他與版本庫1配置檔案完全相同。如果有更多的版本庫,依此類推。
2)配置允許通路的使用者(可以使用vi 或者gedit等修改):
/home/svnroot/repository/test/conf/passwd
注意:對使用者配置檔案的修改立即生效,不必重新開機svn。
檔案格式如下:
[users]
<使用者1> = <密碼1>
<使用者2> = <密碼2>
其中,[users]是必須的。下面列出要通路svn的使用者,每個使用者一行。
示例:
[users]
user1 = test
user2 = hello
3)配置使用者通路權限:
/home/svnroot/repository/test/conf/authz.conf
注意:
* 權限配置檔案中出現的使用者名必須已在使用者配置檔案中定義。
* 對權限配置檔案的修改立即生效,不必重新開機svn。
使用者組格式:
[groups]
<使用者組名> = <使用者1>,<使用者2>
其中,1個使用者組可以包含1個或多個使用者,使用者間以逗号分隔。
版本庫目錄格式:
[<版本庫>:/項目/目錄]
@<使用者組名> = <權限>
<使用者名> = <權限>
權限主體可以是使用者組、使用者或*,使用者組在前面加@,*表示全部使用者。權限可以是w、r、wr和空,空表示沒有任何權限。
示例:
[groups]
developer = user1,user2
[/]
@ developer = rw
[test:/]
user1 = rw
4. 啟動svn
#svnserve -d --listen-port 8080 -r /home/svnroot/repository
其中:
-d表示以daemon方式(背景運作)運作
--listen-port 8080表示使用8080端口,可以換成你需要的端口。注意,使用1024以下的端口需要root權限
-r /home/svnroot/repository指定根目錄是/home/svnroot/repository
檢查:
#ps –ef
顯示所有在執行的程序,每個程序一行,如果有一行如下,即為啟動成功:
root 6941 1 0 15:07 ? 00:00:00 svnserve -d --listen-port 8080 -r /home/svnroot/repository
三、MyEclipse中通路
建立-- 資源庫位置, URL填"svn://219.XX.XX.XX:8080/test"
之後彈出使用者名,和密碼(填上面内容/home/svnroot/repository/test/conf/passwd 裡的使用者和密碼)
一切OK!!!