如何在SVN(Tortoise SVN)中从多个开发人员分支合并后创建主干
我的团队是SVN的新手,我认为我们犯了一个错误,每个开发人员都创建了自己的分支,并开始向自己的分支添加代码。现在,我需要将所有分支合并到一个主干中。有安全的方法吗?我一直在研究这个问题,但是当分支中有一个文件,而不是主干中的文件时,我总是会遇到“树冲突”错误。除了少数会产生错误的文件外,大多数文件都会被添加 主干最初是空的,我试图一次合并一个分支 我们使用的是乌龟SVN 1.7.9 这是我们目前的结构如何在SVN(Tortoise SVN)中从多个开发人员分支合并后创建主干,svn,merge,tortoisesvn,Svn,Merge,Tortoisesvn,我的团队是SVN的新手,我认为我们犯了一个错误,每个开发人员都创建了自己的分支,并开始向自己的分支添加代码。现在,我需要将所有分支合并到一个主干中。有安全的方法吗?我一直在研究这个问题,但是当分支中有一个文件,而不是主干中的文件时,我总是会遇到“树冲突”错误。除了少数会产生错误的文件外,大多数文件都会被添加 主干最初是空的,我试图一次合并一个分支 我们使用的是乌龟SVN 1.7.9 这是我们目前的结构 projectFoo - branches - dev1
projectFoo
- branches
- dev1
- proj1
- dev2
- proj1
- dev3
etc...
- trunk
- <empty>
projectFoo
-分支机构
-dev1
-proj1
-dev2
-proj1
-dev3
等
-树干
-
你会玩得很开心,因为每个人都在自己的分支机构工作,而分支机构之间没有任何关系。这不是编程意义上的合并。真正的合并意味着您将分支“A”从分支“B”中拆分,因此这两个分支有一个共同的祖先版本,现在您将从“A”合并到“B”或从“B”合并到“A”
做你需要做的事情没有简单的方法。如果幸运的话,所有开发人员都在编写单独的代码,因此合并只是意味着将分支合并在一起,而不会有真正的冲突。如果开发人员在同一个文件上工作,但是在不同的分支中工作,那么您就有麻烦了
合并时需要使用--忽略祖先
参数,因为没有祖先。这是我唯一能说的。然而,一旦您克服了这种痛苦,您就可以决定使用更标准的方法来处理分支和合并。有两种范式
这实际上很好用。(还有其他几种,但基本上是有毒的):
- 不稳定的行李箱:我个人的最爱。每个人都在车尾箱外工作。这是上帝设计颠覆的方式。分支仅在必要时进行。必要时的定义有点模糊。基本上,您可以在需要时进行分支,因为您不希望开发人员处于空闲状态
- 流开发:在流开发中,您有一个集成流(通常是主干),开发人员创建开发流(也称分支)来完成他们的工作。开发流可能是开发人员的个人工作区、敏捷任务、Jira问题或特性。您基本上是在主干上创建一个分支,完成工作,重新设置基础(即从主干合并到开发分支流),以及交付(即从开发流合并回主干)