Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVN:两个不同的主要版本并行开发时的存储库结构?_Svn - Fatal编程技术网

SVN:两个不同的主要版本并行开发时的存储库结构?

SVN:两个不同的主要版本并行开发时的存储库结构?,svn,Svn,我对subversion非常陌生,我不知道如何构造存储库。 正如我读到的,“trunk”目录用于主要开发,“tags”用于快照一个版本,“branchs”用于进行一些大的更改/测试,并且不干扰trunk 问题是当一个人有两个主要版本需要并行开发时:我不太清楚如何构建它。我以python语言为例,第2版和第3版都在开发中,我看到了以下结构可能性: 1st one : =========== repos/ python2/ trunk/ tags/ V2.5/

我对subversion非常陌生,我不知道如何构造存储库。 正如我读到的,“trunk”目录用于主要开发,“tags”用于快照一个版本,“branchs”用于进行一些大的更改/测试,并且不干扰trunk

问题是当一个人有两个主要版本需要并行开发时:我不太清楚如何构建它。我以python语言为例,第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/

您将选择什么(当然,您可以提出其他建议)?

我们对SVN使用稍微不同的存储库结构:

主干是当前活动的内容

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

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

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


任何源代码管理的秘诀都是确保团队遵循您同意的实践。

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

  • Python2和Python3是在同一个项目中开发的,来自同一个团队(因此应该至少在一个存储库中开发)
  • Python3是未来(主要)的开发版本,Python2没有进一步的开发(对此不确定)
  • 两者都向公众发布,并且应该保持同步,但是Python3的任何特性都不应该泄漏到Python2中
因此,我将遵循(在中描述的):

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

  • 仅合并V2中与主干兼容的错误修复
  • 不要从主干(=V3)合并到V2

任何布局仅为接受协议

  • 没有任何东西禁止在默认回购结构的基础上创建两个子目录,即v2(可能以相同的方式分开分支),v1也可用
  • 您可以考虑将开发分离为不同的回购协议(在需要的时间和地点与外部协议链接)

问题是,据我理解,有两个“主干”,因为目前有两个版本(在我的示例中,python2和python3是两个不同的版本,应该同时提供)
repos/
  python/
    trunk/
    branches/
      V2/
    tags/
      ...
      V2.7/
      ...
      V3.2/