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

是否可以更改SVN分支的父级?,svn,version-control,branch,branching-and-merging,Svn,Version Control,Branch,Branching And Merging,有一个项目有3个“版本”。一个用于开发,另一个用于测试人员在发布新版本之前测试新功能,最后一个是人们实际使用的 目前,开发版被设置为SVN中的主干。测试版是主干的一个分支,“实时”版是测试版的一个分支 Development | v Testing | v Live 对开发项目进行增量更改,然后分组合并到测试分支中(一个测试修订可能包含多个开发修订的更改)。然后,一旦发现更改正常,它们就会合并到活动分支并发布 但是,在某些情况下,在进行其他更改

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

目前,开发版被设置为SVN中的主干。测试版是主干的一个分支,“实时”版是测试版的一个分支

Development
     |
     v
  Testing
     |
     v
   Live
对开发项目进行增量更改,然后分组合并到测试分支中(一个测试修订可能包含多个开发修订的更改)。然后,一旦发现更改正常,它们就会合并到活动分支并发布

但是,在某些情况下,在进行其他更改之前,必须对活动分支进行更改。虽然仍在测试分支中测试(并且还不能合并到live中),但对主干所做的另一个更改必须进入live

我目前的做法是确保这一更改在测试中是一个单独的修订,然后只将该修订合并到live中。然后,一旦其余的更改都确定,live将使用所有临时修订进行更新

我认为让活动分支将主干作为其父级可能更好,这样“部分合并”将更容易实现

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

是否可以切换活动分支以使主干作为其父级(与测试分支相反),而不丢失其提交历史记录?

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

然而,作为一个副本,副本的来源是无关紧要的。没有任何东西可以阻止您直接从主干合并到分支的分支。当您稍后从测试分支合并到Live时,两次合并版本可能会发生冲突(SVN可能足够聪明,可以避免该冲突),但应该使用三方合并工具轻松解决冲突。也许该工具甚至会自动为您解决它


最近,每当SVN发布时,Merge似乎都得到了改进。请确保您的服务器和客户端都是最新的,以便在这方面获得最佳体验。

因此,我认为visual studio的ankhsvn只接受父分支的修订,而不接受svn本身的修订?必须是。我以前没听说过。仅供参考:它确实允许你这么做,直到现在我才错过了一个组合框选择。