是否可以更改SVN分支的父级?

时间:2014-11-17 14:28:42

标签: svn version-control branch branching-and-merging

有一个项目有3个版本"。一个用于开发,第二个用于测试人员在新版本发布之前测试新功能,最后一个用于人们实际使用的功能。

目前,开发版被设置为SVN中的中继。测试版是主干的一个分支," live" edition是测试版的一个分支。

Development
     |
     v
  Testing
     |
     v
   Live

对开发项目进行逐步更改,然后在组中合并到测试分支中(一个测试版本可能包含多个开发修订的更改)。然后,一旦发现更改正常,它们就会合并到实时分支中并发布。

但是,有些情况下必须对之前的实时分支进行更改其他更改。虽然测试分支中的内容仍在测试中(并且尚未合并到实时中),但对主干进行的另一项更改必须进入实时。

我目前这样做的方法是确保这一个更改是测试中的单独修订,然后仅将一个修订合并到实时。然后,一旦其余的更改都正常,就会使用所有临时修订更新实时。

我认为让live分支将trunk作为其父级可能会更好,以便"部分合并"会更容易做到。

   Development
        |
   -----------
   |         |
   v         v
Testing    Live

是否可以将Live分支切换为使用trunk作为其父级(而不是Testing分支)而不会丢失其提交历史记录?

1 个答案:

答案 0 :(得分:1)

没有。 SVN中的分支只是一个副本。您无法更改复制内容的位置。它就是它的方式。副本的来源是历史的一部分;因此,根据定义,您将无法在不丢失历史记录的情况下更改分支来源。

然而,仅仅是副本,副本的来源是无关紧要的。什么都没有阻止您直接从主干合并到分支的分支。当您稍后从测试分支合并到Live时,您可能会遇到两次合并版本的冲突(SVN可能足够智能以避免该冲突),但应使用三向合并工具轻松解决冲突。该工具甚至可能会自动为您解决。

每次SVN发布时,Merge似乎都会得到改进。确保您的服务器和客户端都是最新的,以获得该领域的最佳体验。