SVN (Subversion) 是公司在用的版控系統,雖然可能有人會覺得有點過時了,現在流行的是以 git 的為主,不過對於一些中小型的應用也還好,學習曲線也比較短。而且,它仍然是一個 Active 的 Opensource project, 由 Apache Foundation 所維護, 所以短期內應該都還不會被遺棄才對。
架設 Subversion Server
架設 SVN Server 可以分為兩類,一般是可以獨立運行的 svn://xxx.xxx.xx.xx protocol,另外一種是要搭配 Apache Server 的。個人不專業的看法是, 如果自己要用,就架設 standalone 的就好了,如果是公司要用的,建議架設 WEB 的會比較靈活。
本文照慣例是使用 Ubuntu 的環境,以 20.04 為展示平台。
Standalone 架設
首先安裝 Subversion
1 |
sudo apt-get install subversion |
接著創建一個空白專案
1 2 |
mkdir ~/svnrepo svnadmin create ~/svnrepo/myprj |
修改 ~/svnrepo/myprj/conf/passwd 來新增帳號
接著編輯 ~/svnrepo/myprj/conf/svnserve.conf 修改設定,找到 / 修改下列3個項目,前且移除前面的 #,使其生效
1 2 3 |
anon-access = none auth-access = write password-db = passwd |
最後,啟動 SVN Daemon
1 |
svnserve -d --listen-port 12345 -r ~/svnrepo/ |
要將 myprj 專案 checkout 下來,只需下達以下命令
1 |
svn co svn://127.0.0.1:12345/myprj |
搭配 Apache 架設
首先安裝 Ubuntu 套件
1 |
apt-get install subversion libapache2-mod-svn apache2-utils apache2 |
新增一個使用者帳號
1 |
htpasswd -c /etc/apache2/dav_svn.passwd joe |
創建一個新的專案 myrepo
1 2 3 |
mkdir -p /var/www/svn svnadmin create /var/www/svn/myrepo chown -R www-data:www-data /var/www/svn |
編輯 /etc/apache2/sites-enabled/000-default.conf,在 </VirtualHost> 後面加入下面內容
1 2 3 4 5 6 7 8 |
<Location /> DAV svn SVNParentPath /var/www/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location> |
最後,啟用 DAV SVN 並重新啟動 Apache
1 2 |
a2enmod dav_svn apachectl restart |
然後就可以 http 來 checkout 專案了
1 |
svn co http://127.0.0.1/myrepo |
TortoiseSVN 瀏覽 SSL SVN
若是使用 SSL 架設的 SVN,在用 TortoiseSVN 瀏覽時會很慢,這是因為外部的認証失敗。可以把憑証放到
1 |
$HOME\AppData\Roaming\Subversion\auth\svn.ssl.server\YOUR_IP_ADDR.crt |
然後加一行
1 |
ssl-authority-files = $HOME\AppData\Roaming\Subversion\auth\svn.ssl.server\YOUR_IP_ADDR.crt |
這樣就可以加速了,其中 $HOME 是 Windows 的家目錄,YOUR_IP_ADDR 是 SVN 的IP,請自行展開
參考文件
- http://gisanfu.pixnet.net/blog/post/9932591-%E8%BD%89%E8%B2%BC%EF%BC%9Asubversion-with-apache-%E6%9E%B6%E8%A8%AD
- http://karrysu.blogspot.tw/2010/04/ubuntu-svn-server-ssl.html
- http://blog.csdn.net/Ivy_yayaxueyu/article/details/1779653