(轉(zhuǎn)載自http://dog.xmu.edu.cn/modules.php?op=modload&name=News&file=article&sid=246&mode=thread&order=0&thold=0)?
Subversion的目錄結(jié)構(gòu)是很自由的,所有的規(guī)劃都必須是你自己規(guī)定,考慮一個(gè)subversion倉(cāng)庫(kù)的目錄樹,你可以把任何一個(gè)目錄認(rèn)定為一個(gè)項(xiàng)目,你可以只checkout這個(gè)目錄下的所有文件進(jìn)行編碼,跟CVS不同,CVS顯式指定一個(gè)個(gè)module。所以你可以在一個(gè)倉(cāng)庫(kù)內(nèi)保存多個(gè)項(xiàng)目,也可以一個(gè)倉(cāng)庫(kù)保存一個(gè)項(xiàng)目而使用多個(gè)倉(cāng)庫(kù)。我個(gè)人比較喜歡第二種,因?yàn)镾ubversion的每次commit都會(huì)導(dǎo)致整個(gè)倉(cāng)庫(kù)版本號(hào)增加一個(gè),會(huì)使得多個(gè)項(xiàng)目的版本號(hào)出現(xiàn)斷層。而且如果多個(gè)項(xiàng)目參與人不同,就必須使用apache2進(jìn)行細(xì)粒度的權(quán)限控制,不是太方便。一個(gè)倉(cāng)庫(kù)一個(gè)項(xiàng)目,顯得更優(yōu)雅一些。
以下是我研究出的倉(cāng)庫(kù)規(guī)劃。
在server端,新建一個(gè)目錄用來存放所有的倉(cāng)庫(kù)。比如c:\svnrepos。然后在這個(gè)目錄下建立每個(gè)項(xiàng)目獨(dú)立的倉(cāng)庫(kù)。
svnadmin create "c:\svnrepos\rolex"
svnadmin create "c:\svnrepos\omega"
使用 svnserve -d -r "c:\svnrepos" 啟動(dòng)。這樣你的項(xiàng)目的url是:
svn://IP/rolex
svn://IP/omega
在客戶端新建一個(gè)目錄,作為import的內(nèi)容,比如c:\svnimport\rolex,然后在里面建立branches,tags,trunk子目錄,把你需要源代碼管理的項(xiàng)目放入trunk目錄,注意刪除垃圾文件。在c:\svnimport\rolex上點(diǎn)擊Import...,選擇url為svn://IP/rolex,導(dǎo)入。你可以使用倉(cāng)庫(kù)瀏覽器查看導(dǎo)入的效果。
需要工作時(shí),新建一個(gè)目錄比如c:\svnclient\rolex\trunk,然后在trunk上checkout出svn://IP/rolex/trunk上的內(nèi)容。