發新話題
打印

[好文轉貼] 版本控制系統 Subversion 安裝於 CentOS 4.X

版本控制系統 Subversion 安裝於 CentOS 4.X

簡單來講,Subversion 採用 Global Revision Numbers,不像其它版本控制系統 (ex: CVS) 是針對每個個別的檔案做版本控制,檔案的版本只會在有修改 commit (提交) 時才會遞增。對 Subversion 來說,在你每次 commit (新增、修改或刪除任何檔案或任何資料夾) 時,Subversion 會遞增 Global Revision Number,而每個檔案和資料夾只會記住它在哪幾個 global revision 裡也有被修改到。所以,你日後要 checkout 時所指定的版本編號所代表的意義是:「整個 repository 在第 N 次 commit 後的狀態」。當然,你 checkout 時所指定的 repository URL 除了可以指定整個 repository 的根目錄,也可以只指定一個檔案或 repository 裡的目錄。

我想這對一般人來講才是比較直覺的,而不像 CVS 是對每個 repository 裡的檔案分別做版本編號,如果要推出一個 release 版本時,需要對所有檔案做 tag 標記,如此一來,CVS 才知道每個檔案要使用第幾版。

系統實作:
#yum -y install subversion
#yum -y mod_dav_svn

或是到底下網站下載:
http://summersoft.fay.ar.us/pub/subversion/latest/rhel-4/i386/

裝好後在 /etc/httpd/conf.d 裡面就會看到 subversion.conf
修改它成為
複製內容到剪貼板
代碼:
<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn

   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
      # Require SSL connection for password protection.
      # SSLRequireSSL

      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /var/www/svn/.htaccess
      Require valid-user
#   </LimitExcept>
</Location>
接著建目錄
#mkdir /var/www/svn
#cd /var/www/svn
#svnadmin create great
#chown -R apache.apache great
#htpasswd -c .htaccess great
#service httpd restart

這樣就大功告成啦..使用Browser觀看
http://localhost/svn/great

備註:
1.subversion 的錯誤訊息是跟 Apache 共用,所以你可以看 /etc/httpd/logs/error_LOG ,找尋安裝subversion過程所發生的問題。
2.每天定期備份 svn 資料到 /svn/mydb.dmp,於 crontab 增加以下指令:
su - apache -c "svnadmin dump /var/www/svn/great --incremental > /var/www/svn/great.dmp"

3.將Dump 檔倒回 /var/www/svn/great 請下以下指令:
svnadmin load /var/www/svn/great < /var/www/svn/great.dmp



可以下載Windows的Tools來使用.. TortoiseSVN
http://tortoisesvn.sourceforge.net/downloads

如果您使用一段時間後..發生以下的Error
[Wed Oct 17 09:24:55 2007] [error] [client 111.222.333.444] (20014)Error string not specified yet: Berkeley DB error while opening environment for filesystem /var/www/svn/great/db:\nDB_RUNRECOVERY: Fatal error, run database recovery
[Wed Oct 17 09:24:55 2007] [error] [client 111.222.333.444] Could not fetch resource information. [500, #0]
[Wed Oct 17 09:24:55 2007] [error] [client 111.222.333.444] Could not open the requested SVN filesystem [500, #160029]
[Wed Oct 17 09:24:55 2007] [error] [client 111.222.333.444] Could not open the requested SVN filesystem [500, #160029]

你就必需執行 db recovery 的動作:
#db_recover -c -v -h /var/www/svn/great/db/
db_recover: Finding last valid log LSN: file: 55 offset 886359
db_recover: Recovery starting from [54][28]
db_recover: Recovery complete at Wed Oct 17 09:29:51 2007
db_recover: Maximum transaction ID 8001cecb Recovery checkpoint [55][886359]

這樣再check 一下 svn...應該就會正常了...

怎麼使用可以參考這篇文章:
http://sanwangx.brain-c.com/archives/2004_11/12_153/

TOP

發新話題