题
我很新的颠覆,但我已经使用其他版本控制系统,如ClearCase,以年。
我的老板让我来解决这个项目,以便它能与Maven而非Ant进行构建。其中一个重要的事情,我必须做的就是往前走src/com
到src/main/java/com
,并移动到test/com
src/test/java/com
,这是我没有使用svn mv
命令。我傻傻的假设,因为我用颠覆命令来移动目录,Subversion应然后知道事情已经被转移。当我合并我支到主干,它似乎工作。但现在人家只是完成了他我的工作才分出一个分支工作。所以,我们去他的东西合并到主干,基本上颠覆似乎想的“OK,他更改了src/com/foo/bar/baz.java
,但该目录不存在了,所以这是无关紧要的,所以它丢弃” 的而不是我所期待的,这是的“OK,他更改了src/com/foo/bar/baz.java
,但src/com
已被移动,所以我需要合并到这src/main/java/com/foo/bar/baz.java
” 的。
有没有一种方法,使颠覆做版本管理,还是我将是手动合并这家伙的变化对未来两天?
解决方案
要直接回答你的问题:
有没有一种方法,使颠覆做版本管理,还是我将是手动合并这家伙的变化对未来两天?
您应该能够使它更容易些自己。
一两件事,可以做,以减轻一些疼痛的(假设的布局如下)
/branch/foo/src/com
/branch/foo/test/com
/trunk/src/main/java/com
/trunk/src/test/java/com
在你感动的src / COM为src /主/ JAVA / COM和测试/ COM为src /测试/ 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
希望这有助于为您节省一些时间。
其他提示
这听起来像一次性问题。我建议你可以使用svn diff > /to/some/file.patch
(或常规差异),以他的更改保存到一个文件,那么它适用于与您patch -p0 < /to/some/file.path
移动树干。
任何试图此软件吗? xMerge
这是插件的SmartSVN但看起来像它做的伎俩。 如果有人使用它,我会很感激,如果给我复习吧。
我只是有同样的问题,我用的的git 的解决了这个问题。我不想与svn merge -r N:M http://server/branch/foo/test/com src/test/java/com
为src/main
,src/test
和resources
合并serveral的模块。
所以我用git svn clone file:///some/repo -T trunk -b branches -t tags
。像这样我能够保持的 git的主的同步与 SVN主干的和合并它与我的的Git分支的。当我做,我合并了的 git的分支至 git的主并从那里到 SVN主干