Branch vs Trunk

时间:2014-02-13 12:55:51

标签: svn version-control merge

我们有一个项目,我们已经在主干编码。现在主干有一个很大的功能,已编码,但我们不希望在第一个版本。

但我们也希望清理第一个版本的代码,因此希望从版本1的项目中删除此功能导致的所有文件和功能。

但是,一旦我们准备发布第2版,我们将需要所有文件和功能。

为了以最有效的方式执行此操作,我们是否应将该功能保留在主干中并为版本1发行版创建单独的分支。在这种情况下,我们将从分支中删除与该功能相关的所有文件和功能,然后在发布后将该分支合并回主干。

或者我们应该将功能相关的文件和功能保存在单独的分支中,然后清理主干。发布后,我们可能会将分支合并回主干以获得该功能。

这两种中哪一种更好? a)用于清理释放的特征和主干的分支 b)用于清理版本的功能和分支的中继

说我按照以下步骤操作。

  1. 我创建了一个分支Branch-V1。在这个例子中,主干和 Branch-V1具有BigFeature。
  2. 我删除并修改Branch-V1中的文件以完全消除BigFeature。
  3. 我从Branch-V1发送V1
  4. 我标记了Branch-V1。
  5. 我将Branch-V1合并到主干中。
  6. 当我将Branch-V1与主干合并时,我不会松开主干中的BigFeature吗?

2 个答案:

答案 0 :(得分:1)

更好的方法是在大功能启动之前从主干分支,然后将更改应用到此版本1分支,当您准备好将v1合并到主干上以创建v2主干。

听起来很复杂但是解决问题的努力最少 - 所以在专用的v1分支上工作,释放它,然后合并回到准备好v2的trunk。

当你这样做的那一刻,你必须做的第一件事就是在将你的更改合并到主干上之前,为你的第1版代码制作一个新标签。然后,一旦在主干上有v2代码,从主干分支到新的“大功能”分支并完成它,就必须开始正常工作,并为要添加的任何其他功能创建分支。当它们完成时将它们合并在主干上,当你释放时,在主干上创建一个“标签”分支。

您可以通过全部转储清理存储库,重命名2个分支,以便将v2 trunk culd重命名为“v2 branch”,v1代码的分支可以成为trunk。如果你有信心这样做,我会推荐它,因为它可以解决问题,你可以假装你一直在以适当的方式工作:)

答案 1 :(得分:0)

我这样做的方式如下: -

  1. 在您开始对此大功能进行更改的版本中,从主干创建分支“v-1.0”。如果您难以跟踪修订号,只需从当前修订版中创建分支,并按照您自己在#2中的建议撤消您所做的更改。
  2.   

    svn copy -r rev-num / trunk /branches/v-1.0

    1. 继续使用“v-1.0”并在完成后从该分支发运产品。 对于1.0中的每个提交,我肯定也会在trunk中提交它(解决当时和那里的任何冲突)。通常在大型项目中,主干的开发也在同时进行。

    2. 1.0出门后,为该版本创建一个标签“v-1.0”,如果此版本上有任何其他请求或要发送补丁,您可以使用同一分支。

    3.   

      svn copy /branches/v1.0 /tags/v-1.0

      因此,您可以继续在分支机构和主干中进行开发。