如何在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\
您会使用哪种,更具体地说,为什么?我倾向于第一种选择,但有些事情感觉不对。与此同时,第二种选择似乎很干净,但很难看。
任何想法都表示赞赏。
答案 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]