我们有相当数量的使用Mercurial的ASP.Net(C#)网站。偶尔,合并时出现“某些东西”出错,并且少量的行被复制到结果文件中;然而,合并期间并未发现合并冲突。Mercurial合并过程中的重复代码
重复的行通常非常“通用”,如块关闭(大括号,结束标记等)。在某些情况下,它们会导致编译器错误;在其他情况下,他们造成JS失败;在其他情况下,只是导致浏览器兼容性问题的无效标记。
我们有很多人在项目上合作,他们经常在分支之间分支,合并分支机构等等,然后再合并回“主要”分支之一(一个用于测试站点,另一个用于生产现场)。
当两个分支独立启动,在某个点合并,然后两个独立合并回到测试站点主分支时,问题似乎最常发生。我们推测,由于合并到测试中的第二个分支没有被合并到测试中的历史记录,因此它包含了已经由第一次分支合并合并的所有更改集合,并且在某些情况下,由于上下文是不检测重复的过于笼统,无法正确放置,只包含它。
这个问题有一个名字吗?这是一个已知的问题吗?是否有避免它的程序?看来这将是一个普遍问题,但我似乎无法找到任何信息。
考虑到项目的规模和涉及的分支数量,我们考虑添加钩子以禁止合并,如果祖先具有已经合并到目标分支的后代,但这可能会非常慢。
我们还考虑添加钩子来强制执行某种“深度和血统”控制,以便合并只能发回到父分支,而不发生在兄弟分支,表兄弟或祖父分支上,但这会严重破坏几个人的协作和工作流程。
想法?
您可以制作一个自包含的示例来演示您遇到的问题吗?一个简短的shell脚本可以创建一个展示问题的回购站。 – ngoldbaum
我不确定。我们的大多数问题都是由非常复杂的文件和分支模式造成的。我不确定我是否能用一个简单的例子来实现它。但是,我会放弃它。 – nhansen
人们是否使用不同的行结尾? – planetmaker