2011-11-23 141 views
3

我在颠覆方面颇有新意,我想知道如何构建一个仓库。 据我所知,'trunk'目录用于主要开发,'tags'用于快照一个版本,'branches'用于做一些大的更改/测试而不干扰主干。SVN:版本​​库结构2并行版本的主要版本?

问题是,当一个人有两个主要版本并行开发时:我不太清楚如何构造它。我把蟒蛇langage的为例,这两个版本2和3是在发展中,我看到这些结构可能:

1st one : 
=========== 

repos/ 
    python2/ 
    trunk/ 
    tags/ 
     V2.5/ 
     V2.6/ 
     V2.7/ 
    branches/ 
     big_modif1/ 
     testing2/ 
    python3/ 
    trunk/ 
    tags/ 
     V3.0/ 
     V3.1/ 
     V3.2/ 
    branches/ 
     big_modif43/ 
     testing37/ 

2nd one : 
=========== 

repos/ 
    python/ 
    trunk/ 
     V2/ 
     V3/ 
    tags/ 
     V2.5/ 
     V2.6/ 
     V2.7/ 
     V3.0/ 
     V3.1/ 
     V3.2/ 
    branches/ 
     big_modif_on_v2.x/ 
     testing2_on_v2.x/ 
     big_modif43_on_v3.x/ 
     testing37_on_v3.x/ 

3rd one : 
=========== 

repos/ 
    python/ 
    trunk/ 
    tags/ 
     V2.5/ 
     V2.6/ 
     V2.7/ 
     V3.0/ 
     V3.1/ 
     V3.2/ 
    branches/ 
     V2_trunk/ 
     V3_trunk/ 
     big_modif_on_v2.x/ 
     testing2_on_v2.x/ 
     big_modif43_on_v3.x/ 
     testing37_on_v3.x/ 

什么你会选择(当然,你可以提出别的东西)?

回答

2

我们用一个稍微不同的版本库结构的SVN:

主干是什么,是目前生活。

为所有开发工作创建开发分支。一般而言,在所有项目中,我们都有主要项目使用的主要开发(或Alpha)分支,然后根据需要创建其他分支。

在部署期间创建标签以测试,uat,live等,然后在成功部署到生产环境后合并到主干。

如果并行工作(例如错误修补),一旦合并回主干,然后将更改合并到任何剩余的活动分支。

与任何源代码管理的秘密一样,确保团队遵循您同意的做法。

+0

的问题是(与外部组件,何时何地需要它的链接),在我的理解中,有2个'trunk',因为有2个版本正在运行(我的例子中的python2和python3是2个不同的版本,应该可以同时使用) – Eric

3

我认为一个组合可能是最好的。让我用你的例子解释一下:

  • 的Python 2和Python 3在同一项目的开发,由同一个团队(因此至少应该在一个存储库来开发)。
  • Python 3是未来的(主要)开发版本,Python 2没有进一步积极开发(不确定)。
  • 两者都向公众发布,并应保持同步,但没有Python 3的功能渗进的Python 2.

所以我会按照"single project repo layout"(在SVN red book描述):

repos/ 
    python/ 
    trunk/ 
    branches/ 
     V2/ 
    tags/ 
     ... 
     V2.7/ 
     ... 
     V3.2/ 

这里的要点是,V2版本在第3版开发时被分支。并且您应该遵循以下合并规则:

  • 只合并V2中的错误修复,以便与主干兼容。
  • 不要从中继(== V3)合并到V2。
1

任何布局仅是接受协议

  • 没有禁止从默认回购的结构,我的基地创建两个子目录。你e V2(有可能是分开的相同方式分支机构),V1也是可以使用的
  • 你可以考虑一下分离发展成不同的回购