合并分支与树干


119

使用TortoiseSVN,我需要在分支中进行更改,然后将其与主干合并。

我是该项目的唯一开发人员,所以我知道主干没有改变。我正在学习SVN,以便最终我的团队可以使用它。

基本上,我希望我的树干看起来像树枝。

在pre-svn世界中,我只需要复制分支文件夹中的文件,删除中继文件夹中的文件,然后将分支复制到中继中即可。

在TortoiseSVN的,我已经试过Reintegrate a branchMerge a range of revisionsMerge two different trees。似乎并没有改变树干。我也尝试过在树干顶部分支。这给我一个错误,说中继线已经存在。

Answers:


157

在您的情况下:

  1. 将工作副本切换到中继(SVN交换机)
  2. 将分支合并到工作副本中(SVN合并)
  3. 确保所有内容仍然可以编译和运行
  4. 提交工作副本(主干)
  5. 考虑杀死分支

团队环境中,我建议您首先合并分支机构主干中的最新修改,确保所有内容都能编译并正常工作,然后执行上述步骤(由于您已经测试了更改,因此这很简单)。


更新资料

在第5步中,我提到杀死分支。这是因为一旦某个功能的分支进入主干,则应将其视为主干的一部分。在这种情况下,应该杀死该分支,以便没有人继续努力。如果需要对该功能进行重大修改,则应为此创建一个新分支。

我不杀的唯一分支是维护和发行分支,除非不再支持特定发行版。

无论如何,您始终可以访问每个修订版,因此终止分支仅用于防止其他开发人员在失效的分支上进行开发。


您在第5步中添加的注释可能最好是第1步?当您想使用TortoiseSVN合并对话框中的“重新集成分支”时,首先要合并主干(或基本分支)中的所有更改。
jbvo 2011年

1
仅当没有单独的分支和主干工作副本时才需要第一步(将工作副本切换到主干)吗?
Jeff B

1
我认为这里缺少的一个主要细节是您为每个步骤单击的文件夹,因此您知道每个步骤的上下文。
MacGyver 2014年

10

我认为在TortoiseSVN 1.8.5中,合并| 合并两个不同的树应该工作。当您将分支/标记合并回主干时,技巧是,“发件人URL”是主干而“收件人”是标记/分支。奇怪但真实。

资料来源:合并

对于不在您的工作副本中但在标签/分支中的目录,您可能会遇到冲突错误。只需接受冲突并重做合并即可。


按照tortoisesvn网站上的说明进行操作后,请确保在合并之后,无需更改任何内容即可提交干线。我尝试取消选中一些我不想提交的东西,这导致了一些非递归提交警告。另外,考虑按照说明删除分支。
goku_da_master

6

首先将工作副本切换到主干。然后进行合并的修订范围,从分支到主干。完成此对话框后,差异将在您的主干工作副本中待更改。您将需要提交它们,就像您在工作副本上手动进行更改一样。

在我的用法中,更典型的做法是在构建时保持主干运行并断开分支。因此,我唯一需要做的合并就是从主干中获得一个错误修复,并将其放在最新的build分支上,然后重新发布该分支。对我而言,最简单的方法是进行合并,因为您发现合并最多是笨拙的。是为了将最新的分支和主干检出到我的机器中,并从字面上将文件从主干复制到分支并同时检入。


2
“复制”文件时应格外小心。使用类似TortoiseSVN的导出功能,以避免损坏隐藏的svn目录。
Milimetric 2011年

3

我正在使用TortoiseSVN 1.9.3,内部版本27038。

请按照以下步骤将分支合并到中继中。

1)右键单击中继工作副本,然后选择以下选项。

在此处输入图片说明

2)如果分支合并到中继中,请选择第二个选项,如下所示,然后单击下一步

在此处输入图片说明

3)在“发件人:”字段中,输入中继的完整文件夹URL。这听起来可能是错误的,但请记住,主干是要将分支更改添加到的起点。在“收件人:”字段中,输入功能分支的完整文件夹URL。

在此处输入图片说明

4)单击下一步并进行测试合并

在此处输入图片说明

5)如果测试合并成功,则单击“合并”按钮。

6)合并成功后,将更改提交到主干。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.