对于我的一个应用程序,我正在考虑实现分支/合并。我不明白在某些情况下如何在没有冲突的情况下进行合并。让我们以此为例。
Root编写了一些代码。A、B和C从他那里提取并添加功能。C已完成,因此A和B从中拉取/合并。我相信它是通过将它们自己的代码与使用root作为基础的C语言进行比较来实现的。现在A和B编写更多的特性并完成。
现在,如果我从A拉,然后从B拉,会发生什么呢?它们的基础是root,它们都是从C中提取出来的,所以编辑了相同的代码行。它如何知道它是否是冲突?如果我编辑C写的行,然后从B中拉出,会怎么样?我想这会是一个冲突。现在我的最后一个问题是,如果A和B在从C中拉出后将函数的位置打乱,会发生什么?我想现在归结为dif识别有多好,但我不确定如何才能在没有冲突的情况下从A和B中拉出。
发布于 2012-10-29 06:45:11
有时你会遇到冲突,例如A和B编辑相同的行(不同)。然后,您需要通过检查更改来手动合并更改(可能还需要与A和B交谈!),而不是依赖DVCS为您合并。
您还可能遇到逻辑冲突(A和B更改文件的不同部分,因此没有明显的冲突,DVCS可以处理合并,但这些部分打破了彼此的假设,因此引入了一个bug )。版本控制不能解决这个问题,只能解决开发人员之间的通信和单元测试。
发布于 2012-10-30 16:08:56
如何知道它是否存在冲突?
但是正如在"Still not drinking the DVCS Kool-Aid“的评论中提到的,定期提交和合并(以比CVCS,集中式版本控制系统高得多的速度)是避免逻辑冲突的关键,或者使它们尽可能地小。
有关语义冲突的更多信息,请参阅此Martin Fowler article。
https://stackoverflow.com/questions/13113755
复制相似问题