我在公司工作过的一个项目在SVN中有点搞砸了(我会责怪我们的期望,工程师应该知道如何在没有事先曝光和没有培训的情况下使用它)。该项目之前由一名工程师拥有,但所有权已转移给更熟悉SVN如何工作的新员工。当他开始研究代码库时,他做了一个“分支”来解决问题,但忽略了使用TortoiseSVN Branch / tag ... 命令。
相反,他只是在Development
目录中创建了一个名为./branches
的目录,并手动复制了所有文件。在过去的6个月里,这个分支已成为后备箱应该是什么,它已经被广泛使用而没有合并到后备箱。从那时起,该项目的规模和能力不得不增长,现在有几个新的目录,文件和外部添加到Development
分支。我们现在谈论800个版本的差异。
那我该如何修复呢?
目前,如果我运行 Merge ... 命令,使用合并一系列修订选项,我可以通过多种方式搞乱选项,但没有他们通过测试合并没有冲突和树冲突。特别是,冲突主要发生在Development
“分支”的第二次提交上,之后冲突可能不会发生。到目前为止,我已经尝试过:
REV1-REV2
- > 测试合并 REV1-REV2
- > 忽略祖先 = True
- > 测试合并 True
- > 测试合并 在这5种组合中,最后一种看起来最有希望的是,只有树冲突,它们只发生在添加的文件夹和文件上(外部看起来像是要正确合并,但是很难说出来的时候只是使用测试合并。
我想尽可能保留历史记录,但此时trunk
中的代码已经过时,以至于它无用,我不会完全反对仅仅复制它。将这个“分支”移回trunk
同时保留关于所发生事件的最大量信息的最轻松的路径是什么?
我已经和拥有这个项目的开发人员谈过了,我们将一起解决这个问题,这样他就可以更多地了解SVN如何工作以及如何正确使用它。我想做好准备,以便我们能够迅速完成并尽可能多地从经验中获益。
答案 0 :(得分:3)
NotShort简历
为了在行李箱中获得Development
状态并从Development
开始放弃所有行李箱的历史记录,您必须致电(在行李箱的干净厕所中)
svn merge --ignore-ancestry --accept 'tf' /PATH/TO/Development
(没有合并冲突,可能树冲突)
对于TSVN,它是
合并一系列修订 - > 所有修订(特定范围 = empty
等于“全部”) - > 忽略祖先 = True
但您无法定义自动冲突解决方案(--accept
选项),因为它可以在CLI中完成