“天真”svn从分支合并到主干?

时间:2010-02-08 09:30:03

标签: svn merge tortoisesvn branch

我正在使用TortoiseSVN进行我的C ++项目,并试图将一个分支“重新整合”回到主干中。

我的情况很简单,因此对于分支中已更改的每个文件,我希望它完全覆盖主干中的匹配文件。不幸的是,TortoiseSVN比我聪明,所以它合并了每对文件 - 导致一些不一致的代码。例如,在分支中删除的一些代码行将在合并版本中恢复。

有没有办法强迫TortoiseSVN使用覆盖所有修改过的文件的天真合并行为?

谢谢, 丹

5 个答案:

答案 0 :(得分:7)

以下是如何使用SVN进行操作(在文件系统中没有任何问题):

  1. 查看您创建分支的主干版本(不是 HEAD修订版)。
  2. 将其提交到存储库(这会撤消所有后续的主干更改)。
  3. 重新整合合并(您的主干工作副本现在应该与分支相同。)
  4. 提交合并后的中继,你就完成了!

答案 1 :(得分:0)

  1. 更新到分支上的最新内容
  2. 将工作站上的所有文件复制
  3. 将分支机构切换为主干
  4. 使用常规Windows资源管理器覆盖(仅覆盖已更改的文件)
  5. 提交

答案 2 :(得分:0)

webwesen's answer有点改善,因为我真的没有看到一个简单的方法:

  • 在某个目录中进行分支的svn导出
  • 将此目录中的所有文件复制到trunk dir
  • 提交

答案 3 :(得分:0)

据我所知,这在svn目前是不可能的,所以TortoiseSVN无法帮助你。

为了简化一点(好吧,很多),以svn update命令为例。如果您的工作副本和存储库中有修改但没有实际冲突,svn update只会将存储库的更改合并到您的工作副本中。

我认为没有办法解决这个问题。如果您遇到实际冲突,可以使用--accept ACTION命令行选项仅保留本地更改(例如)。但是如果你想为存储库和工作副本中更改的任何文件指定一个接受操作,那么你很遗憾没有运气。

我觉得向svn开发人员询问这个案例的命令行选项可能是一个想法,而不是它会及时发布以帮助你。

我提到的冲突解决问题表明了一个丑陋的黑客攻击,我不建议这样做。使用您喜欢的工具,获取分支中已更改的文件列表。现在,对于该列表中的每个文件,通过在每行上添加一个不常见的字符来修改它。将更改提交到主干。合并以在重新集成之前使分支更新,但使用--accept来阻止任何可怕的中继文件进入。然后,再次使用--accept重新集成以覆盖可怕的中继文件。 / p>

我应该补充一点,你不能用TortoiseSVN这样做,至少不是很明显,因为它不支持--accept,至少不是我能找到的。

好吧,我它很丑陋。不要在家尝试这个! (我当然没有。)

答案 4 :(得分:-2)

“svn merge”命令是为此目的而设计的,它允许您一步合并。说明here