如何将不正确创建的“分支”(实际上不是由svn副本创建)合并到主干中?

时间:2010-03-23 08:12:18

标签: svn merge branch

我正在组建一个团队,其中有许多人对版本控制系统的概念非常不熟悉,而且只是通过反复试验来做任何看似有用的事情。有人从行李箱创建了一个“分支”,这个分支与主干没有祖先关系。我的猜测是这样的:

  1. 他们在branches
  2. 中创建了一个文件夹
  3. 他们检查了从主干到桌面某处的所有代码。
  4. 他们将所有代码添加到新创建的文件夹中,好像它是一堆全新的文件。
  5. 因此存储库并不知道所有代码实际上只是主干的副本。当我在TortoiseSVN中查看该分支的历史记录,并且取消选中“在复制/重命名时停止”框时,没有修订版具有“复制自”下的主干(或任何其他路径)路径“专栏。

    然后他们对他们的“分支”做了很多改变。与此同时,其他人正在对行李箱进行大量改动。我们试图做merge,当然它不起作用。因为,行李箱和假枝不是祖先相关的。

    我只能看到两种解决方法:

    1. 浏览“分支”上的日志,查看所做的每项更改,并手动将每个更改应用到主干。
    2. 浏览主干上的日志,查看修订版540(创建“分支”)和HEAD之间所做的每个更改,并手动将每个更改应用于“分支”。
    3. 这涉及7个版本的单向修改或11个版本的修改,因此没有一个真正那个可怕。但有没有办法让存储库“意识到”该分支确实是祖先相关的,即使它是错误创建的,这样我们就可以利用Eclipse / TortoiseSVN中的内置合并功能了?

      (您可能想知道:为什么贵公司雇用这些人并允许他们访问SVN存储库而不确定他们是否知道如何正确使用它?!我们没有 - 这是一个学校作业,是两个不同阶级之间的合作 - 下层阶级的合作给了SVN一个非常快速的手动“概述”,它没有真正教给他们任何东西。我已经要求小组中的每个人请请阅读{ {3}},我将确保我们(团队中稍微有点经验的一半)密切关注存储库,以确保不再发生这种情况。)

1 个答案:

答案 0 :(得分:3)

您必须在merge命令中使用 - ignore-ancestry 。通过此SVN将忽略文件是否被添加为新的。它只是寻找文件名