我正在使用TortoiseSVN进行我的C ++项目,并试图将一个分支“重新整合”回到主干中。
我的情况很简单,因此对于分支中已更改的每个文件,我希望它完全覆盖主干中的匹配文件。不幸的是,TortoiseSVN比我聪明,所以它合并了每对文件 - 导致一些不一致的代码。例如,在分支中删除的一些代码行将在合并版本中恢复。
有没有办法强迫TortoiseSVN使用覆盖所有修改过的文件的天真合并行为?
谢谢, 丹
答案 0 :(得分:7)
以下是如何使用SVN进行操作(在文件系统中没有任何问题):
答案 1 :(得分:0)
答案 2 :(得分:0)
对webwesen's answer有点改善,因为我真的没有看到一个简单的方法:
答案 3 :(得分:0)
据我所知,这在svn目前是不可能的,所以TortoiseSVN无法帮助你。
为了简化一点(好吧,很多),以svn update
命令为例。如果您的工作副本和存储库中有修改但没有实际冲突,svn update
只会将存储库的更改合并到您的工作副本中。
我认为没有办法解决这个问题。如果您遇到实际冲突,可以使用--accept ACTION
命令行选项仅保留本地更改(例如)。但是如果你想为存储库和工作副本中更改的任何文件指定一个接受操作,那么你很遗憾没有运气。
我觉得向svn开发人员询问这个案例的命令行选项可能是一个想法,而不是它会及时发布以帮助你。
我提到的冲突解决问题表明了一个丑陋的黑客攻击,我不建议这样做。使用您喜欢的工具,获取分支中已更改的文件列表。现在,对于该列表中的每个文件,通过在每行上添加一个不常见的字符来修改它。将更改提交到主干。合并以在重新集成之前使分支更新,但使用--accept
来阻止任何可怕的中继文件进入。然后,再次使用--accept
重新集成以覆盖可怕的中继文件。 / p>
我应该补充一点,你不能用TortoiseSVN这样做,至少不是很明显,因为它不支持--accept
,至少不是我能找到的。
好吧,我说它很丑陋。不要在家尝试这个! (我当然没有。)
答案 4 :(得分:-2)
“svn merge”命令是为此目的而设计的,它允许您一步合并。说明here。