本文參考了這篇文章http://svnbook.red-bean.com/en/1.0/ch06s04.html
概要:
- svn (subversion) 是一種開源免費的軟體項目源檔案版本管理工具
- svn 伺服器是集中管理 svn 容器,並允許 svn 用戶端通過http或者遠程登入訪問 svn 容器的伺服器。
- 本文介紹在 Mac OS 或者 Cent OS 下建立一個允許用戶端通過 http 訪問的 svn 伺服器的方法。
環境:
- Apache:
- OS:
Mac OS X 10.6 Snow Leopard
Mac OS X 10.7 Lion
Cent OS 5.6 Final
預備知識
Mac OS X 對 svn 的相容:
- 預設安裝了如下 svn 命令列工具
- 內建的Apache伺服器中預裝了 svn 需要的模組 mod_dav.so 和 mod_dav_svn.so
其中 mod_dav.so 預設載入,mod_dav_svn.so 需要手動設定載入。後述。
- 內建 Apache 伺服器安裝路徑:
/etc/apache2/
關於 WebDAV/DeltaV 協議
- 這是兩個應用程式層協議,提供svn需要的遠程認證,metadata管理,版本管理和組態管理功能。
- Apache 2.0 開始通過mod_dav模組支援這兩個協議。
關於在 Mac OS X 內建的 Apache 中安裝模組
- 內建的 Apache 存放模組檔案的位置(和通常安裝的Apache不同)
/usr/libexec/apache2/
- 本次需要的模組已經存在,所以未進行另外安裝。
配置http訪問
建立svn容器
- 在自己的使用者檔案夾下建立一個容器 /Users/nutcracker/repository
配置 Apache
- CentOS :
sudo yum -y install httpd subversion mod_dav_svn
無需手動編輯Apache設定檔。
- Mac OS :
編輯 /etc/apache2/httpd.conf,使 Apache 啟動時載入 mod_dav_svn 模組
mod_dav_svn 載入指令要放在mod_dav載入指令的後面。
注意需要用root許可權編輯,否則無法儲存。
sudo vim /etc/apache2/httpd.conf
- 在 httpd.conf 中添加下面指令來告訴 Apache 將所有路徑部分以/repos開頭的URL交給位於SVNPath下的 DAV provider 來處理。SVNPath 為前面建立的容器的路徑。
<Location /repos>
DAV svn
SVNPath /Users/nutcracker/repository
</Location>
- 重啟 Apache (Mac OS X 有自己的啟動方法,參照以前的文章)
測試方法
- 建立測試專案
- 添加到容器
- 瀏覽器訪問
- checkout
- 配置成功
Cent OS 和 Lion 下遇到的問題
- errcode="13" Could not open the requested SVN filesystem
- 原因是將容器建立在/home/nutcracker/repos,apache沒有存取權限。
- Snow Leopard下將repos檔案夾chmod到777就可以訪問,而CentOS和Lion不行,chown到apache.apache也不行。原因不明。
- 將容器建立在 /var/www/svn/ 下即可解決。