最近為了文件/源碼版本控管的需求,裝了 subversion 1.3.2 來用。
感覺
不知為何,在 Gentoo 2006.1 on Pentium2 266 上的 Subversion 很容易 hang 住。現在重新編譯 subversion 1.3.2 中,將一些支援選項先關掉看看能否正常。
- 反過來說,Windows 上的 Subversion 很穩定,這部份可以參考 嘟嘟老窝 的安裝手記將 svnserve 轉成 service 模式。
- Subversion 和 CVS 在版本管控認知上有很大的差異:
- CVS: 以檔案為主,每個檔案的修改版次各自獨立控管,所以 release 一個版本時很難知道某個檔案的某版號究竟屬於那個 release 版。
- Subversion: 以完整系統為主,所有檔案統一歸到一個修改版次上,在 release 一個版本時會有完全一致的修改版號。
- 因版本管控認知差異所造成的使用方式改變:
- 對於異動次數多的與次數少的,可能不方便放在同一個檔案庫下。
- 多個專案必須對應到多個檔案庫中,否則會造成一版次一直遞增,但實際上線的版本即始未曾改動卻差了幾十、幾百版次。
建立多檔案庫的方法:
為免一個小更動造成各專案/文件之版次變動,因此要建立多檔案庫。
- 所有檔案庫必須歸到同一主目錄下,如:SVN_ROOT=/home/svn
- 在主目錄下可以再建子目錄,作為檔案庫分類之用
mkdir $SVN_ROOT/docs # 儲放文件檔
mkdir $SVN_ROOT/projects # 儲放專案資料
- 利用 svnadmin 建立所需檔案庫
svnadmin create $SVN_ROOT/docs/document1 # 第一份文件庫
svnadmin create $SVN_ROOT/docs/document2 # 第二份文件庫
svnadmin create $SVN_ROOT/projects/project1 # 第一份專案庫
svnadmin create $SVN_ROOT/projects/project2 # 第二份專案庫
- 將 svnserve 的 --root 參數指向 $SVN_ROOT 上, Gentoo 上是編緝 /etc/conf.d/svnserve 這個檔
SVNSERVE_OPTS="--root=/home/svn"
- 設定 $SVN_ROOT 目錄的擁有者,此例是指派給 svn 用戶
chown -R svn:svn $SVN_ROOT
- 設定一下 svnserve 執行時的身份(配合 $SVN_ROOT 的擁有者身份),同樣編輯 /etc/conf.d/svnserve 檔
- 啟動 svnserve 吧!
/etc/init.d/svnserve start
- 如果是 Windows 平台的話,那檔案權限設定的部份可以跳過。
Subversion 的權限控制
- 請參閱 Subversion的权限控制,先讓所有的檔案庫可以參照到同一份 authz 及 passwd 。在 Windows 上可以 copy 方式統一所有設定檔;在 Linux 上則乾脆用 soft link 比較省事
(這麼做是否有問題還待測試,原因是實際操作時總是發現 svnserve 會 hang 住) 。
- authz 這個檔案的設定是為了賦予各檔案庫不同的權限,以 [name:path] 方式對檔案庫 (name) 的路徑 (path) 進行區分。其中 name 是檔案庫相對於 $SVN_ROOT 的路徑;path 則是相對於檔案庫本身的子目錄。
- 以 $SVN_ROOT/docs/document1 這個檔案庫來說,對應的的設定方式就是 [docs/document1:/];若是要設定到檔案庫下的某個子目錄時,就變成 [docs/document1:/rfp] 或 [docs/document1:/proposal] 分別表示 document1 檔案庫下的 rfp 目錄或 proposal 目錄。
Windows 平台補充
2006-11-13 補充
參考資料:
- 嘟嘟老窝:Subversion安装手记
- Subversion 中文站:Subversion快速入门教程
- Subversion 中文站:Subversion的权限控制,這是建立多重檔案庫的重要參考資訊。
沒有留言:
張貼留言