Mercurial合并过程中出现重复代码



我们有相当数量的ASP.Net(C#)网站使用Mercurial。有时,合并会出现"问题",少量行被复制到生成的文件中;但是,在合并过程中没有发现合并冲突。

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

我们有很多人在项目上进行协作,他们经常从彼此的分支中分出,在分支之间合并,等等,然后再合并回一个"主要"分支(一个用于测试站点,另一个用于生产站点)。

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

这个问题有名字吗?这是一个已知的问题吗?有没有一个程序可以避免它?这似乎是一个常见的问题,但我似乎找不到任何关于它的信息

如果祖先的后代已经合并到目标分支中,我们已经考虑添加钩子来禁止合并,但考虑到项目的规模和所涉及的分支数量,这可能会非常缓慢。

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

想法?

但是,在合并过程中没有发现合并冲突。

好吧,我想说有人解决冲突非常糟糕。

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

我在玩graft,我的diff工具做了一些愚蠢的事情。例如,文件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-gapt不像merge那样工作。我需要将分支B的两个提交都传递给hg graft

也许,你的问题与此无关,我猜你的团队只使用hg merge。但我仍然相信,一定有人在某种程度上错误地融合了事物。

最新更新