adj 2007-10-31 17:20
版本控制系統 Subversion 安裝於 RHEL 4
簡單來講,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 才知道每個檔案要使用第幾版。
系統實作:
#up2date install subversion
#up2date mod_dav_svn
或是到底下網站下載:
[url=http://summersoft.fay.ar.us/pub/subversion/latest/rhel-4/i386/]http://summersoft.fay.ar.us/pub/subversion/latest/rhel-4/i386/[/url]
裝好後在 /etc/httpd/conf.d 裡面就會看到 subversion.conf
修改它成為[code]<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>[/code]接著建目錄
#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
[url=http://tortoisesvn.net/downloads.html]http://tortoisesvn.net/downloads.html[/url]
怎麼使用可以參考這篇文章:
[url=http://sanwangx.brain-c.com/archives/2004_11/12_153/]http://sanwangx.brain-c.com/archives/2004_11/12_153/[/url]
adj 2007-10-31 17:21
如果您使用一段時間後..發生以下的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...應該就會正常了...參考以下網站
[url]http://subversion.tigris.org/faq.html#bdb-recovery[/url]