我们的服务器正在运行subversion 1.8.10。我们的客户使用1.8+。我们主要使用TortoiseSVN(因此我将使用乌龟术语来描述),版本1.8+ 我们的(常见)颠覆工作流程是:
这一切都很好。
我们遇到过一些情况,例如,BranchA有一些变化(例如添加一些文件)。它是最新的(从主干)并在合并回到主干之前通过代码审查。 BranchB是从(主干)创建的,并希望从BranchA获取更改以便从它们构建
如果我们从BranchA到BranchB的MRoR,我们会得到我们所期望的更改。我们可以根据需要多次合并BranchA,我们也可以从主干到分支A或BranchB的MRoR ......一切似乎都很好。
BranchA可以合并回主干(使用MTDT),工作正常。但是,一旦我们MRoR再次进入BranchB,在BranchA合并之后,我们就会得到树的嫌疑。为什么是这样? SVN正在跟踪合并历史,它可以看到BranchA是谁创建/移动/ etc文件。如果我执行相同的过程,而是使用MTDT从BranchA合并到BranchB,结果完全相同。即使BranchB没有自己的更改,这仍然会发生。
从BranchA合并到BranchB的正确方法是什么,以便在BranchA合并回主干后,在从trunk到BranchB的下一个MRoR上没有出现树冲突?
这种事情很容易在git中完成。我确信应该有办法绕过树冲突。
感谢您的帮助!
答案 0 :(得分:1)
我已经完成了一些测试,并且已经弄明白了。我将继续分享如何做到这一点,以防更多的人有同样的问题 回顾一下:
当你想到它时,树冲突实际上是有意义的。从BranchB的角度来看,它从BranchA获得了一些从合并中修改过的文件,然后再从中继的合并中获得了一些文件。因此,树冲突。问题是来自主干的合并不允许BranchB知道BranchA已合并到主干。 实际上有两种方法可以解决这个问题。
如果不清楚,请使用方法2 我知道这是一个先进的SVN工作流程。但是,我希望这个解释能帮助其他有类似问题的人。
TortoiseSVN合并战略来源: https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html
答案 1 :(得分:0)
在深入探讨之前,您必须拥有修复工作流程中的弱点和错误:
svn help merge
表格.1)AFAICR,即使正确的工作流程为"循环"不久前合并(A-> B-> C-> A)神秘的树冲突(在TSVN 1.8.11之前和之中)(您的体验现在可能不同)并在Mercurial中合并分支(包括手工)通过Mercurial的工作目录的内容替换SVN目标的WC - Mercurial可以双向地与SVN交互,但是stll不能将自己的合并集推入SVN-repo)和手动编辑SVN中的mergeinfo