Svn 为什么将分支提交到仍然未触及的主干会导致冲突?

Svn 为什么将分支提交到仍然未触及的主干会导致冲突?,svn,branching-and-merging,Svn,Branching And Merging,我的第一次大目录合并经历了一段艰难的时光,我希望能找到一些线索来解释我为什么会出现这些错误 一周前,我将trunk/中的代码进行了分支,并对branchs/myBranch中的代码进行了大量更改,决定将它们合并到trunk/中。从那时起,主干中就没有涉及任何代码,这与新代码分支时完全相同,因此我认为这意味着不会出现冲突 这似乎是错误的假设,据我所知,当试图将新代码合并到主干和丢失文件的报告中时,会遇到大量冲突。有人能澄清为什么会发生这种情况吗 这是基本事实: 该守则在19466年修订时分门别类

我的第一次大目录合并经历了一段艰难的时光,我希望能找到一些线索来解释我为什么会出现这些错误

一周前,我将trunk/中的代码进行了分支,并对branchs/myBranch中的代码进行了大量更改,决定将它们合并到trunk/中。从那时起,主干中就没有涉及任何代码,这与新代码分支时完全相同,因此我认为这意味着不会出现冲突

这似乎是错误的假设,据我所知,当试图将新代码合并到主干和丢失文件的报告中时,会遇到大量冲突。有人能澄清为什么会发生这种情况吗

这是基本事实:

  • 该守则在19466年修订时分门别类
  • 从那以后,这只箱子一直没有动过。无变更(上次变更版本:19453)
  • 分支(不幸的是?)是在本地完成的,包含了一些更改
  • 我尝试使用以下命令合并分支介绍主干中的更改:
    svn merge-r19466:HEAD branchs/myBranch trunk/
    。(不管我是站在后备箱里跳过最后一个论点,还是只是做上面的事情)
  • Subversion抱怨缺少一个文件fooDao。
    !C trunk/fooDao.java

    >本地丢失,合并时传入编辑

    这个文件在创建分支的同一个提交中被重命名(19466),但我认为subversion应该接受这个文件,因为它是使用
    svn move
    发布的。日志显示了它的祖先:

    。。。 A/branchs/myBranch/fooDao.java(from/branchs/myBranch/fooDato.java:19452)

  • 如果您想知道为什么即使没有代码更改,修订号也会增加,那是因为它是一个包含许多其他(活动项目)的共享存储库
我遇到的错误的主要原因是创建分支的方式不正确。如果分支正确,brainch point将拥有与主干中完全相同的文件(在该版本中)。如果在修订版100中创建的分支要合并到主干中,那么我可以只使用
svn merge-r100:HEAD../branchs/myBranch./trunk
,只获取这些修订版中文件的更改

不幸的是,在创建分支之前,我在trunk/中进行了本地修改。这些修改被复制到新分支中,然后提交。因此,myBranch和trunk中的文件在创建分支时是不同的。为了纠正这种情况,我必须在创建分支之前找到一个修订版本来合并(比如说:rev99),然后从那里进行合并。 出现的任何冲突都可以通过选择“tf”(它们的完整文件)从冲突中的分支获取完整文件来解决。我可以做这个快速修复,因为行李箱没有动过,也没有任何变化

总而言之:为了避免问题,通过确保

  • 中继中的所有本地修改都已提交
  • 在服务器上进行复制。如“svn cp”中所述https://source.foo.com/svn/repos/myProj/branches/myBranch"

您可能需要检查此解决方案和本章“本地丢失,合并时输入编辑”非常感谢。几个小时以来,我一直在试图解决一个类似的问题,这是第一篇真正解释出问题所在的帖子。我还不确定我将如何修复它,但至少我知道它为什么会发生。谢谢你的评论。知道创建帖子/答案所涉及的工作对其他人来说是有价值的,总是很高兴的:)