2009-10-23 55 views
3

如何在SVN中維護兩個(或更多)版本的項目?不同的中繼線,在主幹線內?分支機構?完全獨立的文件夾?在Subversion中管理多個應用的​​最佳方式

我現在有,假設我要做出ProjecA的V2,但我仍然需要修復的bug V1:

\ProjectA\trunk\[myfiles] 
\ProjectA\tags\ 
\ProjectA\branches\ 

這將是做到這一點的最好方法是什麼?

\ProjectA\trunk\[myfiles] 
\ProjectA\tags\ 
\ProjectA\branches\v1\[myfiles] 
\ProjectA\branches\v2\[myfiles] 

或者會是這樣的更好?

\ProjectAv1\trunk\[myfiles] 
\ProjectAv1\tags\ 
\ProjectAv1\branches\ 

\ProjectAv2\trunk\[myfiles] 
\ProjectAv2\tags\ 
\ProjectAv2\branches\ 

你會用哪一個,更具體地說,爲什麼呢?我傾向於第一種選擇,但有些事情感覺不對。同時,第二種選擇似乎很乾淨,但很難看。

任何想法表示讚賞。

回答

7

通常的方法幾乎就是你的中間例子。關於the subversion documentation中的分支模式有一個很好的討論。

+0

很多其他很棒的東西也在這個鏈接上顛覆。謝謝! – Nate 2009-10-23 19:28:01

+1

該文檔不*推薦他的中間示例。他不應該爲v2創建一個新分支,直到他開始v3工作。 – 2009-10-23 19:43:14

+2

正確,版本化的分支(v1,v2,v3)只有一次這些版本處於維護模式。 – Nate 2009-10-23 19:50:01

1

我認爲這是覆蓋非常好位置:manage-merging-updates-from-several-developers

的短版,

/Project/trunk 
/project/tags/version1 
/project/branches/version1-sp1 <- when sp1 ships, create 
/project/tags/version1-sp1 <- and a branch off this called 
/project/branches/version1-sp2 

/項目/主幹總是包含你的頭/主代碼,任何版本的具體的修改進入一個單獨的分支。

在時機成熟時開始的3版本,創建另一個標籤/分支組合。

/Project/tags/version2 <- for the shipped version 
/Project/branches/version2-sp1 <- for fixes/features. 
0

請記住,「trunk」只是另一個分支 - 給這些目錄名唯一的含義就是你給它的。所以,如果你的應用有不同的版本V1,V2,V3 ..有發展完全不同的方向,你可以把一個行李箱每一個版本里面,像這樣:

\ProjectA\v1\trunk\[myfiles] 
\ProjectA\v1\tags\ 
\ProjectA\v1\branches\[myfiles] 
\ProjectA\v2\trunk\[myfiles] 
\ProjectA\v2\tags\ 
\ProjectA\v2\branches\[myfiles] 

或(和我想我更喜歡這更好) ,在那裏你保持在高電平的正常軀幹/標籤/分支結構的,但你的選擇#2的一個變種只是放棄全球主幹的想法(因爲真的有一個爲每個版本幹線):

\ProjectA\trunk\v1\[myfiles] 
\ProjectA\trunk\v2\[myfiles] 
\ProjectA\tags\ 
\ProjectA\branches\v1\[myfiles] 
\ProjectA\branches\v2\[myfiles] 
1

我認爲最好做

\ProjectA\trunk\[myfiles] <= this becomes v2 
\ProjectA\tags\ 
\ProjectA\branches\v1\[myfiles] 

我相信這最好的保留了樹幹的含義。

相關問題