Thursday, December 17, 2009

Subversion Server on Ubuntu

寫程式這麼久,今天終於把 Subversion(svn) Server 架起來了XD

架一個 Subversion Server 主要有 2 個工作要做︰

1. 建立 svn檔案系統

(1) 先安裝 subversion 套件及 apache2 的 svn 模組
sudo apt-get install subversion libapache2-svn
(2) 在系統中建立 svn 的檔案庫目錄︰
sudo mkdir /path_to_svn_repository/
(3) 在 /path_to_svn_repository/ 建立 svn 的檔案系統
sudo svnadmin create /path_to_svn_repository/
(4) 設定使用權限給 apache2
sudo chown -R www-data:www-data /path_to_svn_repository/

2. 在 apache2 上設定好 subversion 模組(這邊假設已經安裝及設定好基本的 apache2 系統)︰

(1) 建立並編輯 dav_svn.conf
sudo a2enmod dav_svn
sudo vim /etc/apache2/mods-avaliable/dav_svn.conf
將檔案內的以下文字前的 # 號刪除,若檔案不存在,可使用

#顯示在 URL 上的路徑 ex︰http://localhost/svn
DAV svn
SVNPath /path_to_svn_repository/ #設定檔案庫的路徑
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user


(2) 設定使用者權限 : dav_svn.authz

sudo vim /etc/apache2/dav_svn.authz # 若原本不存在,則直接建立
在檔內加入以下內容︰

# 定義群組
[groups]
admin = admin1
users = user1

# 定義目錄權限
[/] # "/"為 svn 的根目錄,亦即 SVNPath 所定義的目錄,可調整為其下的目錄路徑
*=
@admin = rw #admin 群組具有讀寫權限
@user = r #user群組僅有讀取權限
(3) 設定使用者密碼
sudo /usr/bin/htpasswd -c /etc/apache2/dav_svn.passwd admin1
sudo /usr/bin/htpasswd -c /etc/apache2/dav_svn.passwd user1
(4) 重新啟動 apache2
sudo /etc/init.d/apache2 restart
#########################################################

接著就可以使用瀏覽器開打 svn 的網址看看
http://hostname/svn/
如果設定正確的話,應該會出現類似以下的字樣︰

svn - Revision 0: /


Powered by Subversion version 1.5.4 (r33841).

#########################################################

關於 SVN client 程式的選用,若是在 windows 系統下,可使用 TortoiseSVN ,算是相當方便好用的。而Linux 系統則可以採用 RapidSVN 做為 client ,也是視窗模式介面。

如果寫程式是使用 Eclipse 的話,還可以從 Eclipse 內直接上線安裝 Subclipse plugin ,方便控制版本。若是 Microsoft Visual Studio 的開發環境,則可以使用 ankhsvn 做版本控制。

ankhsvn