作者:蘇小勇 來源:
http://www.bestunix.net原文地址:
http://www.bestunix.net/p/rhel_subversion.php關于Subversion的種種優點就不用再說了,有興趣的話可以去
http://subversion.tigris.org/ 了解,或者google一下。
第一步,先檢查是否安裝了下面軟件包,rpm -q apr apr-devel subversion neon compat-libcom_err
沒有的話,推薦使用apt來下載安裝,只要 apt-get install subversion 一個命令就全搞定了,非常方便.apt的使用可以參考 http://www.bestunix.net/p/rhel4_apt.php
第二步,創建倉庫 svnadmin create /home/svnrepo
/root/svnrepo為所創建倉庫的路徑,理論上可以是任何目錄
第三步,修改配置文件/home/svnrepo/conf/svnserve.conf
代碼 |
#去掉#[general]前面的#號 [general] #匿名訪問的權限,可以是read,write,none,默認為read anon-access = none #認證用戶的權限,可以是read,write,none,默認為write auth-access = write #密碼數據庫的路徑,去掉前面的# password-db = passwd |
注意:所有的行都必須頂格,否則報錯。
建議:為了防止不必要的錯誤,建議你直接用我上面的內容覆蓋掉文件原來的內容
第四步,修改配置文件passwd。
注意
1. 一定要去掉[users]前面的#,否則svn只能以匿名用戶登錄,客戶端不會出現登錄窗口,除非你的anon不為none,否則將返回一個錯誤。
2. 這里的密碼都是沒有加密的,我按照一些教程所說的用htpasswd生成的密碼無法使用。
第五步,啟動svn服務
對于單個代碼倉庫
啟動命令??svnserve -d -r /home/svnrepo --listen-host 192.168.1.200
其中-d表示在后臺運行,-r指定服務器的根目錄,這樣訪問服務器時就可以直接用svn://服務器ip來訪問了。如果服務器有多ip的話--listen-host來指定監聽的ip地址.
我們可以在svn客戶端中通過svn://192.168.1.200來訪問svn服務器
對于多個代碼倉庫,我們在啟動時也可以用-r選項來指定服務器根目錄,但訪問時需要寫上每個倉庫相對于svn根目錄的相對路徑.
比如,我們有兩個代碼倉庫/home/repo1 和/home/repo2,我們用svnserve -d -r /home --listen-host 192.168.1.200來啟動,那么在客戶端訪問時可以用svn://192.168.1.200/repo1和svn://192.168.1.200/repo2來分別訪問兩個項目
啟動完成以后,我們可以用ps aux|grep svnserv來查看是否存在svnserve進程.
第六步 開放服務器端口
svn默認端口是3690,你需要在防火墻上開放這個端口。
????? /sbin/iptables -A INPUT -i eth0 -p tcp --dport?3690 -j ACCEPT
????? /sbin/service iptables save
你也可以通過svnserve的--listen-port選項來指定一個已經開放的其他端口,不過這樣的話客戶端使用也必須家上端口,如svn://192.168.1.200:9999/.
第七步,使用svn客戶端導入項目
推薦使用客戶端 http://tortoisesvn.tigris.org/
eclipse插件 http://subclipse.tigris.org/
附:svnserve [選項]
有效選項:
?-d [--daemon] ? ? ? ? ? ?: 后臺模式
?--listen-port arg ? ? ? ?: 監聽端口(后臺模式)
?--listen-host arg ? ? ? ?: 監聽主機名或IP地址(后臺模式)
?--foreground ? ? ? ? ? ? : 在前臺運行(調試時有用)
?-h [--help] ? ? ? ? ? ? ?: 顯示這個幫助
?--version ? ? ? ? ? ? ? ?: 顯示版本信息
?-i [--inetd] ? ? ? ? ? ? : inetd 模式
?-r [--root] arg ? ? ? ? ?: 服務根目錄
?-R [--read-only] ? ? ? ? : 不贊成;使用檔案庫配置文件
?-t [--tunnel] ? ? ? ? ? ?: 隧道模式
?--tunnel-user arg ? ? ? ?: 隧道用戶名(模式是當前用戶UID的名字)
?-T [--threads] ? ? ? ? ? : 使用線程代替進程
?-X [--listen-once] ? ? ? : 監聽一次(調試時有用)