3

我在主干中有一个具有旧目录结构的文件夹,以及几个目录被分组为新文件夹的子文件夹的分支:

old(trunk) > root/dirA
                 /dirB
                 /dirC

new(branch) > root/dirGROUP/dirA
                           /dirB
                           /dirC

new目录中被svn move命令移动。

dirA旧文件和新文件之间存在文本冲突dirA.

当我执行svn merge --reintegrate http://url.to.the.branchSVN 时,只需删除 old ,dirA并给我新的目录结构,而不会注意到旧版本和新版本文件之间的冲突,就好像它是独立目录一样。新文件与状态合并。 SVN 默认支持这种合并吗?如果是,事实证明我错过了一些东西 如果不是 - 如何教 SVN 注意到这种冲突?dirBdirCdirAdirAA

4

1 回答 1

3

这现在可能会有所帮助,我有两种解决方案。您面临的问题可以通过这些方法来克服。

解决方案1:

假设您有以下文件

/branch/foo/src/com
/branch/foo/test/com
/trunk/src/main/java/com
/trunk/src/test/java/com

在将 src/com 移动到 src/main/java/com 并将 test/com 移动到 src/test/java/com 之前,您可以这样做:

cd $TRUNK
svn merge -r N:M http://server/branch/foo .

你现在可以做的是:

cd $TRUNK
svn merge -r N:M http://server/branch/foo/src/com src/main/java/com
svn merge -r N:M http://server/branch/foo/test/com src/test/java/com

或者你还能做什么

解决方案2:

1) 执行 svn up 以获取最新的代码副本(在旧目录结构中)

svn up 

2) 在 dir 目录结构中使用 unix 命令复制目录

cp -r /root/dirA /root/dirGroup/
cp -r /root/dirB /root/dirGroup/
cp -r /root/dirC /root/dirGroup/ 

现在您在所需路径中有本地副本。

3) 删除旧文件。

svn -d file names.
svn ci 

4) 为所有三个目录添加新文件和 d dirs svn add dirA svn add dirB svn add dirC svn ci

于 2013-06-25T17:56:47.787 回答