資源描述:
《SVN中trunk,branches,tags用法詳解》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、SVN中trunk,branches,tags詳細(xì)解說詳解11.trunk是主分支,是日常開發(fā)進(jìn)行的地方。2.branches是分支。一些階段性的release(發(fā)布、發(fā)行)版本,這些版本是可以繼續(xù)進(jìn)行開發(fā)和維護(hù)的,則放在branches目錄中。又比如為不同用戶客制化的版本,也可以放在分支中進(jìn)行開發(fā)。3.tags目錄一般是只讀的,這里存儲階段性的發(fā)布版本,只是作為一個里程碑的版本進(jìn)行存檔。注意:svn并沒有明確的規(guī)范,更多的還是用戶自己的習(xí)慣。下面是詳細(xì)介紹:比如一個項目有main.cpp,common.h兩個文件,假設(shè)目前在開發(fā)的是最新的3.0版本,而且1.0/2.0版本也在進(jìn)行
2、維護(hù),那么項目樹將類似如下樣子:project
3、+--trunk+
4、++-----main.cpp(3.0版本的最新文件)++-----common.h++--branches+
5、++--r1.0++
6、+++----main.cpp(1.x版本的最新文件)+++----common.h++++--r2.0+
7、++----main.cpp(2.x版本的最新文件)++----common.h++--tags(此目錄只讀)
8、+--r1.0+
9、++----main.cpp(1.0版本的發(fā)布文件)++----common.h++--r1.1+
10、++----main.cpp(1.1版本的發(fā)布文
11、件)++----common.h++--r1.2+
12、++----main.cpp(1.2版本的發(fā)布文件)++----common.h++--r1.3+
13、++----main.cpp(1.3版本的發(fā)布文件)++----common.h++--r2.0+
14、++----main.cpp(2.0版本的發(fā)布文件)++----common.h++--r2.1
15、+----main.cpp(2.1版本的發(fā)布文件)+----common.h要使用這樣的文件夾結(jié)構(gòu),在建立項目版本庫時,可首先建好項目文件夾,并在其中建立trunk,branches,tags三個空的子目錄,再將項目文件夾連同這三個子目錄
16、一起導(dǎo)入版本庫。這樣在trunk中開始進(jìn)行開發(fā),當(dāng)需要建立branch或tag時,使用SVN的copy操作進(jìn)行。其中tags目錄需要只讀,可以使用SVN中的authz文件控制該目錄的訪問權(quán)限為只讀.詳解2Subversion有一個很標(biāo)準(zhǔn)的目錄結(jié)構(gòu),是這樣的。比如項目是proj,svn地址為svn://proj/,那么標(biāo)準(zhǔn)的svn布局是svn://proj/
17、+-trunk+-branches+-tags這是一個標(biāo)準(zhǔn)的布局,trunk為主開發(fā)目錄,branches為分支開發(fā)目錄,tags為tag存檔目錄(不允許修改)。但是具體這幾個目錄應(yīng)該如何使用,svn并沒有明確的規(guī)范,更多的還是
18、用戶自己的習(xí)慣。對于這幾個開發(fā)目錄,一般的使用方法有兩種。我更多的是從軟件產(chǎn)品的角度出發(fā)(比如freebsd),因?yàn)榛ヂ?lián)網(wǎng)的開發(fā)模式是完全不一樣的。1.第一種方法,使用trunk作為主要的開發(fā)目錄一般的,我們的所有的開發(fā)都是基于trunk進(jìn)行開發(fā),當(dāng)一個版本/release開發(fā)告一段落(開發(fā)、測試、文檔、制作安裝程序、打包等)結(jié)束后,代碼處于凍結(jié)狀態(tài)(人為規(guī)定,可以通過hook來進(jìn)行管理)。此時應(yīng)該基于當(dāng)前凍結(jié)的代碼庫,打tag。當(dāng)下一個版本/階段的開發(fā)任務(wù)開始,繼續(xù)在trunk進(jìn)行開發(fā)。此時,如果發(fā)現(xiàn)了上一個已發(fā)行版本(ReleasedVersion)有一些bug,或者一些很急迫
19、的功能要求,而正在開發(fā)的版本(DevelopingVersion)無法滿足時間要求,這時候就需要在上一個版本上進(jìn)行修改了。應(yīng)該基于發(fā)行版對應(yīng)的tag,做相應(yīng)的分支(branch)進(jìn)行開發(fā)。例如,剛剛發(fā)布1.0,正在開發(fā)2.0,此時要在1.0的基礎(chǔ)上進(jìn)行bug修正。按照時間的順序1.0開發(fā)完畢,代碼凍結(jié)?基于已經(jīng)凍結(jié)的trunk,為release1.0打tag此時的目錄結(jié)構(gòu)為svn://proj/+trunk/(freeze)+branches/+tags/+tag_release_1.0 (copyfromtrunk)?2.0開始開發(fā),trunk此時為2.0的開發(fā)版?發(fā)現(xiàn)1.0有b
20、ug,需要修改,基于1.0的tag做branch此時的目錄結(jié)構(gòu)為svn://proj/+trunk/(dev2.0)+branches/+dev_1.0_bugfix(copyfromtag/release_1.0)+tags/+release_1.0 (copyfromtrunk)?在1.0bugfixbranch進(jìn)行1.0bugfix開發(fā),在trunk進(jìn)行2.0開發(fā)?在1.0bugfix完成之后,基于dev_1.0_bugfix的branch做release等?根