我的第一个大目录合并有一段艰难时期,并希望找到解决这些错误原因的线索。
我在一周前将trunk中的代码分支出来并对branches / myBranch中的代码进行了大量更改,并决定将它们合并到trunk /中。之后没有代码在主干中被触及,它与新代码分支时的代码完全相同,所以我认为这意味着不会出现冲突。
错误的假设,似乎,正如我所知,在尝试将新代码合并到主干和丢失文件的报告时会遇到一堆冲突。有人可以澄清为什么会这样吗?这是基本事实:
svn merge -r19466:HEAD branches/myBranch trunk/
。 (如果我站在主干并跳过最后一个论点,或者只是做上述事情,那没关系) Subversion抱怨丢失文件fooDao。
! C trunk/fooDao.java
> local missing, incoming edit upon merge
这个文件是在创建分支的同一个提交中重命名的(19466),但我认为subversion应该选择它,因为它是使用svn move
发布的。日志显示其祖先:
... A /branches/myBranch/fooDao.java(来自/branches/myBranch/fooDato.java:19452)
答案 0 :(得分:3)
我遇到的错误的主要原因是由于以不健全的方式创建分支。如果你正确分支 ,脑干点将具有与干线(在该版本中)完全相同的文件。如果将在修订版100中创建的分支合并到主干中,那么我可以使用svn merge -r100:HEAD ../branches/myBranch ./trunk
并仅获取这些修订中的文件的更改。
不幸的是,在创建分支之前,我在trunk /中进行了本地修改。这些修改被复制到新分支中,然后提交。因此,myBranch和trunk中的文件在创建分支时是不同的。为了解决这种情况,我必须在分支创建之前找到一个修订版(例如:rev99)并从那里进行合并。 出现的任何冲突都可以通过选择“tf”(它们的完整)来解决,以便在冲突中从分支获取完整文件。我可以快速解决这个问题,因为行李箱没有动过,也没有变化。
总结一下:为避免出现问题,请确保
正确分支