【发布时间】:2015-02-01 17:24:27
【问题描述】:
我在公司中参与的一个项目在 SVN 中有些混乱(我会责怪我们的期望,即工程师应该知道如何在没有事先接触和培训的情况下使用它)。该项目以前由一名工程师拥有,但所有权已转移给更不熟悉 SVN 工作原理的新员工。当他开始编写代码库时,他做了一个“分支”来解决,但忽略了使用 TortoiseSVN Branch/tag... 命令。
相反,他只是在./branches 目录中创建了一个名为Development 的目录,并手动复制了所有文件。在过去的 6 个月里,这个分支已经变成了主干应该有的样子,并且被广泛使用,而从未合并回主干。从那时起,该项目的规模和能力都必须增长,现在Development 分支中添加了几个新目录、文件和外部文件。我们现在谈论的是 800 次修订差异。
那么我该如何解决呢?
目前,如果我通过 Merge... 命令运行,使用 Merge a range of revisions 选项,我可以通过多种方式混淆这些选项,但没有他们中的一个通过 Test merge 没有冲突和树冲突。特别是,冲突主要发生在Development“分支”的第二次提交上,之后冲突可能不会发生。到目前为止,我已经尝试过:
- 合并一系列修订 -> 所有修订 -> 测试合并
-
合并一系列修订 -> 特定范围=
REV1-REV2-> 测试合并 -
合并一系列修订 -> 特定范围=
REV1-REV2-> 忽略祖先=True-> 测试合并 - 合并两个不同的树 -> 测试合并
-
合并两个不同的树 -> 忽略祖先=
True-> 测试合并
在这 5 种组合中,最后一种似乎最有希望,因为只有树冲突,它们只发生在添加的文件夹和文件上(外部看起来它们会被正确合并,但很难判断何时只是使用 测试合并。
我想尽可能地保留历史记录,但此时trunk 中的代码已经过时,毫无用处,我不会完全反对只是复制它。将这个“分支”移回trunk,同时保留关于所发生事件的最大信息量的最轻松的前进路径是什么?
我已经与拥有该项目的开发人员进行了交谈,我们将一起解决这个问题,以便他可以更多地了解 SVN 的工作原理以及如何正确使用它。我想做好准备,以便我们能够快速完成并从经验中获得尽可能多的收获。
【问题讨论】:
标签: svn version-control merge tortoisesvn