首页 > 解决方案 > Svn:合并分支和主干上的目录更改

问题描述

我正在尝试将我的 svn 分支合并到主干,但是主干和分支上的目录结构都发生了变化。

分支点的原始目录结构如下:

Main
|---- Input
|     |---- A
|     |---- B, etc.
|     ...
|---- Output
      |---- A
      |---- B, etc.
      ...

分支后,trunk上的目录结构变为:

Main
|---- A
|     |---- Input
|     |---- Output
|---- B, etc.
...

然而,在分支上,文件夹 A 被拆分为两个单独的文件夹,因此目录结构变为:

Main
|---- Input
      |---- A_1
      |---- A_2
      |---- B, etc.
      ...
|---- Output
      |---- A_2
      |---- A_1
      |---- B, etc.
      ...

我想将分支合并到主干,使其具有以下结构并保留分支上所有提交的历史记录:

Main
|---- A_1
|     |---- Input
|     |---- Output
|---- A_2
|     |---- Input
|     |---- Output
|---- B, etc.
...

当我尝试天真地将分支合并到主干时,我与 Input 和 Output 文件夹发生了树冲突。svn状态是:

M      .
!     C Input
>   local missing or deleted or moved away, incoming dir edit upon merge
!     C Output
>   local missing or deleted or moved away, incoming dir edit upon merge
Summary of conflicts:
  Tree conflicts: 2

感觉就像我可以只合并分支中的 A_1 和 A_2 文件夹,但它们在主干上不存在。我试图在主干上创建一个新的 A_1/Input 和 A_2/Input 文件夹,并从我的分支上的 Input/A_1 和 Input/A_2 合并,但我遇到了没有共同祖先的问题。它们显然都来自文件夹 A,但我不知道如何让 svn 考虑到这一点。

有没有简单/任何方法可以做到这一点?

我正在使用 svn,版本 1.9.5

标签: svnmerge

解决方案


我建议将您的 Subversion 升级到 1.10.x,因为这个版本有一个新的交互式冲突解决程序:https ://subversion.apache.org/docs/release-notes/1.10#conflict-resolver 。在这些情况下可能会有所帮助。


推荐阅读