X

Debian Linux 架設 Subversion(SVN)

打算想要架 svn + apache2 + trac + + virtual host, 先從 subversion 和 apache2 開始 🙂

  1. apt-get install libapache2-svn apache2 subversion
  2. mkdir -p /home/svn/repository # 可以建到 /home/svn 即可(我習慣多一個檔案庫, 之後 svn 那層 可以放設定檔或其它東西)
  3. svnadmin create /home/svn/repository/PROJECT_NAME
  4. chown -R www-data.www-data /home/svn/repository/PROJECT_NAME
  5. 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>

  6. 編輯 vim /etc/apache2/dav_svn.authz, ACCOUNT1 只能讀, ACCOUNT2 可以讀寫, 其它所有都不能進來.(PROJECT_NAME:/, 那個 / 可以是 /trunk => 代表設定誰在 trunk 能做什麼事的意思)

    [PROJECT_NAME:/]
    * =
    ACCOUNT1 = r
    ACCOUNT2 = rw

  7. 增加透過 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
  8. 重新啟動 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 的方法:

  1. svnadmin create /home/svn/repository/NEW_PROJECT_NAME
  2. chown -R www-data.www-data /home/svn/repository/NEW_PROJECT_NAME 
  3. vim /etc/apache2/mods-available/dav_svn.conf 裡面 對 <Location /svn> 改成另外的名字, 就可以用變另一種專案, 裡面的帳號/密碼也都可以另外產生.
  4. vim /etc/apache2/dav_svn.authz 這個檔案檔名會依照 dav_svn.conf 做修改, 裡面加上 NEW_PROJECT_NAME/帳號 等參數, 再重新啟動 apache 即可.
  5. 就可以 http://DOMAIN_NAME/svn/NEW_PROJECT_NAME 存取.

通常 PROJECT 習慣建立如下目錄(branches, tags, trunk):

  1. mkdir /tmp/PROJECT_NAME
  2. mkdir /tmp/PROJECT_NAME/branches # 分支
  3. mkdir /tmp/PROJECT_NAME/tags
  4. mkdir /tmp/PROJECT_NAME/trunk # 主幹, 所有檔案都往裡面塞
  5. svn import /tmp/PROJECT_NAME http://DOMAIN_NAME/svn/PROJECT_NAME/ -m "initial import"
  6. 或 svn import /tmp/PROJECT_NAME file:///home/svn/repository/PROJECT_NAME
  7. 之後 checkout: svn co http://DOMAIN_NAME/svn/PROEJCT_NAME/trunk

參考文件: Subversion的權限控制

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post