常見SVN目錄結(jié)構(gòu)如下:trunk、branches、tags
一、trunk
主分支,是日常開發(fā)進行的地方。
二、branches
branches是分支。一些階段性的release版本,這些版本是可以繼續(xù)進行開發(fā)和維護的,則放在branches目錄中。又比如為不同用戶客制化的版本,也可以放在分支中進行開發(fā)。
三、trunk
目錄一般是只讀的,這里存儲階段性的發(fā)布版本,只是作為一個里程碑的版本進行存檔。一般的,我們的所有的開 發(fā)都是基于trunk進行開發(fā),當(dāng)一個版本/release開發(fā)告一段落(開發(fā)、測試、文檔、制作安裝程序、打包等)結(jié)束后,代碼 處于凍結(jié)狀態(tài)(人為規(guī)定,可以通過hook來進行管理)。此時應(yīng)該基于當(dāng)前凍結(jié)的代碼庫,打tag。
比如一個項目有main.cpp, common.h兩個文件,假設(shè)目前在開發(fā)的是最新的3.0版本,而且1.0/2.0版本也在進行維護,那么項目樹將類似如下樣子
project
|
+-- trunk
+ |
+ +----- main.cpp (3.0版本的最新文件)
+ +----- common.h
+
+-- branches
+ |
+ +-- r1.0
+ + |
+ + +---- main.cpp (1.x版本的最新文件)
+ + +---- common.h
+ +
+ +-- r2.0
+ |
+ +---- main.cpp (2.x版本的最新文件)
+ +---- common.h
+
+-- tags (此目錄只讀)
|
+-- r1.0
+ |
+ +---- main.cpp (1.0版本的發(fā)布文件)
+ +---- common.h
+
+-- r1.1
+ |
+ +---- main.cpp (1.1版本的發(fā)布文件)
+ +---- common.h
+
+-- r1.2
+ |
+ +---- main.cpp (1.2版本的發(fā)布文件)
+ +---- common.h
+
+-- r1.3
+ |
+ +---- main.cpp (1.3版本的發(fā)布文件)
+ +---- common.h
+
+-- r2.0
+ |
+ +---- main.cpp (2.0版本的發(fā)布文件)
+ +---- common.h
+
+-- r2.1
|
+---- main.cpp (2.1版本的發(fā)布文件)
+---- common.h
這樣在trunk中開始進行開發(fā),當(dāng)需要建立branch或tag時,使用SVN的copy操作進行。
其中tags目錄需要只讀,可以使用SVN中的authz文件控制該目錄的訪問權(quán)限為只讀。
- tag,是用來做一個milestone(里程碑)的,不管是不是release,都是一個可用的版本。
- branch,是用來做并行開發(fā)的,這里的并行是指和trunk進行比較。
比如,3.0開發(fā)完成,這個時候要做一個tag,tag_release_3_0,然后基于這個tag做release,比如安裝程序等。trunk進入3.1的開發(fā),但是3.0發(fā)現(xiàn)了bug,那么就需要基于tag_release_3_0做一個branch,branch_bugfix_3_0,基于這個branch進行bugfix,等到bugfix結(jié)束,做一個tag,tag_release_3_0_1,然后,根據(jù)需要決定branch_bugfix_3_0是否并入trunk。
四、svn目錄設(shè)計

五、參考
https://www.cnblogs.com/wntd/p/5881794.html
https://my.oschina.net/devpmp/blog/845013
https://blog.csdn.net/boy10649/article/details/37946939