簡單來講,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
或是到底下網站下載:
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.net/downloads.html
怎麼使用可以參考這篇文章:
http://sanwangx.brain-c.com/archives/2004_11/12_153/