我在trunk中有一个旧目录结构的文件夹,分支中有几个目录被分组为新文件夹的子文件夹:
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.branch
时,SVN只是删除旧的dirA
, dirB
, dirC
,给我新的目录结构,没有注意到新旧dirA
版本的文件之间的冲突,就好像它们是独立的目录一样。新dirA
中的文件与A
状态合并。
SVN是否默认支持合并?如果是的话,结果是我遗漏了一些东西
如果没有-如何教SVN注意到这个冲突?
这可能会有所帮助,我有两个解决方案。您所面临的问题可以通过这些方法来克服。
Solution1:
假设您有以下文件
/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
或者你还能做什么
Solution2:
1)执行svn up以获取最新的代码副本(在旧的目录结构中)
svn up
2)用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)添加新的文件和目录svn添加dirAsvn添加dirBsvn添加目录