在Subversion中管理多个应用程序的最佳方式

时间:2009-10-23 19:19:24

标签: svn

如何在SVN中维护项目的两个(或更多)版本?主干内有不同的树干?分支机构?完全分开的文件夹?

我目前有,假设我即将制作ProjecA的v2,但我仍然需要修复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\

您会使用哪种,更具体地说,为什么?我倾向于第一种选择,但有些事情感觉不对。与此同时,第二种选择似乎很干净,但很难看。

任何想法都表示赞赏。

4 个答案:

答案 0 :(得分:7)

通常的做法几乎就是你的中间例子。在the subversion documentation中对分支模式进行了很好的讨论。

答案 1 :(得分: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 

/ Project / trunk将始终包含您的HEAD / MASTER代码,并且任何特定于版本的修改都将包含在单独的分支中。

当从版本3开始时,您将创建另一个标记/分支组合。

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

答案 2 :(得分:1)

我认为最好做

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

我相信这最能保留干线的含义。

答案 3 :(得分: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]