打算想要架 svn + apache2 + trac + + virtual host, 先從 subversion 和 apache2 開始 🙂
- apt-get install libapache2-svn apache2 subversion
- mkdir -p /home/svn/repository # 可以建到 /home/svn 即可(我習慣多一個檔案庫, 之後 svn 那層 可以放設定檔或其它東西)
- svnadmin create /home/svn/repository/PROJECT_NAME
- chown -R www-data.www-data /home/svn/repository/PROJECT_NAME
- vim /etc/apache2/mods-available/dav_svn.conf # 拿掉下述地方的註解, 只有 SVNParentPath 要修改路徑.(或者直接 cp 下面的即可),沒有此檔可靠 a2enmod dav_svn 產生.
<Location /svn>
DAV svn
SVNParentPath /home/svn/repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
</Location> - 編輯 vim /etc/apache2/dav_svn.authz, ACCOUNT1 只能讀, ACCOUNT2 可以讀寫, 其它所有都不能進來.(PROJECT_NAME:/, 那個 / 可以是 /trunk => 代表設定誰在 trunk 能做什麼事的意思)
[PROJECT_NAME:/]
* =
ACCOUNT1 = r
ACCOUNT2 = rw - 增加透過 apache 存取(ci/co)的 使用者帳號/密碼 到 /etc/apache2/dav_svn.passwd
- /usr/bin/htpasswd -c /etc/apache2/dav_svn.passwd ACCOUNT1
- /usr/bin/htpasswd /etc/apache2/dav_svn.passwd ACCOUNT2
- 重新啟動 apache: /etc/init.d/apache2 restart
這樣子就可以做 checkout(co)/commit(ci)/update(up)... 等動作囉~ 存取 url 如下:
- svn co http://localhost/svn/PROJECT_NAME
- svn co http://DOMAIN_NAME/svn/PROJECT_NAME
- 同樣於 http://DOMAIN_NAME/svn/PROJECT_NAME/ 應該就會看到 Revision 資訊
參考來源: 在Debian下安裝SVN(subversion)
附註:
快速新增其它 SVN PROJECT 的方法:
- svnadmin create /home/svn/repository/NEW_PROJECT_NAME
- chown -R www-data.www-data /home/svn/repository/NEW_PROJECT_NAME
- vim /etc/apache2/mods-available/dav_svn.conf 裡面 對 <Location /svn> 改成另外的名字, 就可以用變另一種專案, 裡面的帳號/密碼也都可以另外產生.
- vim /etc/apache2/dav_svn.authz 這個檔案檔名會依照 dav_svn.conf 做修改, 裡面加上 NEW_PROJECT_NAME/帳號 等參數, 再重新啟動 apache 即可.
- 就可以 http://DOMAIN_NAME/svn/NEW_PROJECT_NAME 存取.
通常 PROJECT 習慣建立如下目錄(branches, tags, trunk):
- mkdir /tmp/PROJECT_NAME
- mkdir /tmp/PROJECT_NAME/branches # 分支
- mkdir /tmp/PROJECT_NAME/tags
- mkdir /tmp/PROJECT_NAME/trunk # 主幹, 所有檔案都往裡面塞
- svn import /tmp/PROJECT_NAME http://DOMAIN_NAME/svn/PROJECT_NAME/ -m "initial import"
- 或 svn import /tmp/PROJECT_NAME file:///home/svn/repository/PROJECT_NAME
- 之後 checkout: svn co http://DOMAIN_NAME/svn/PROEJCT_NAME/trunk
參考文件: Subversion的權限控制