Mercurial合并期间重复的代码

时间:2017-10-12 18:44:50

标签: merge mercurial

我们使用Mercurial拥有相当数量的ASP.Net(C#)网站。有时,合并会出现“某些问题”,并且会在生成的文件中复制少量行;但是,合并期间没有发现合并冲突。

复制的行通常是非常“通用”的行,如块闭包(括号,结束标记等)。在某些情况下,它们会导致编译错误;在其他情况下,它们导致JS失败;在其他情况下,只是导致浏览器兼容性问题的无效标记。

我们有许多人在项目上进行合作,他们经常分支彼此的分支,在分支之间合并,等等很久才合并回一个“主要”分支(一个用于测试站点,以及另一个用于生产现场)。

当两个分支独立启动,某些点合并,然后两个独立合并回测试站点主分支时,问题似乎最常发生。我们假设由于要合并到测试的第二个分支没有被合并到测试的历史,它包括已经由第一个分支合并合并的所有变更集,并且在某些情况下,由于上下文是过于通用,无法正确放置,只是包含它。

这个问题有名字吗?这是一个已知的问题吗?是否有一个程序要遵循以避免它?它似乎必须是一个常见问题,但我似乎无法找到任何相关信息。

如果祖先有一个已经合并到目标分支的后代,我们已经考虑过添加钩子以禁止合并,但考虑到项目的大小和涉及的分支数量,这可能会非常慢。

我们还考虑添加钩子来强制执行某种“深度和血统”控制,这样合并只能发生在父分支上,而不会发生在兄弟姐妹,表兄弟或祖父母分支上,但这会极大地扰乱几个人的协作和工作流程。

思想?

1 个答案:

答案 0 :(得分:1)

  

但是,合并期间没有发现合并冲突。

好吧,我会说有人正在非常严厉地解决冲突。

这怎么可能?他们不懒,对吧?

我正在玩graft,我的差异工具做了一些愚蠢的事。 例如,文件index.html,在默认分支中:

</div>
</div>
</body></html>

分支A:

</div>
<br></div>
</body></html>

分支B:

<p></div>
</div>
</body></html>

分支B再提交一次:

<p>a</div>
</div>    
</body></html>

将分支A与default合并,罚款。

default上的嫁接 B时,我得到:

<p>a</div>
</div>
<br></div>
</body></html>

合并 B与default

<p>a</div>
<br></div>
</body></html>

几个小时后,我明白hg移植不合作就像合并一样。我需要将分支B的两个提交传递给hg graft

可能您的问题与此无关,我猜您的团队只使用hg merge。但我仍然认为,某些人必须错误地合并。