合并分支实际上如何工作(引擎盖下)?

pis*_*hio 5 theory versioning merge

这可能是一个天真的问题,但是,正如对象中所要求的那样,版本化软件将分支合并回主干而不会产生破坏代码的实际方式是什么?

这是一个简单的例子:我在"Hello World Power edition"程序的主干中创建了一个分支.我添加了对Klingon的支持.这是一个彻底改变,改变了printHelloWorld()函数的工作方式.

同时,由于bug#749导致"Hello World"被写为"Helo World",主干中的函数printHelloWorld()已被更改.

现在,我在这里看到的问题是:当我通过分支合并回主干时,我在文件sayHello.py中的函数printHelloWorld()中实验冲突

如何做一个VCS程序知道如何从我的分支中加入克林贡支持保持bug修复在主干?什么是人为驱动或软件驱动的策略来避免这种情况?

提前致谢.

aku*_*aku 3

VCS 程序如何知道如何从我的分支添加 Klingon 支持并将错误修复保留在主干中?

VCS 对源代码的语义一无所知,它将源代码视为一堆文本/二进制文件。VCS 系统使用差异/合并算法来检测您的文件版本与当前文件版本之间的冲突。您有责任解决此​​类冲突,因为只有您知道这些更改的语义。某些 VCS(例如 SVN)会要求您使用主干中的最新更改更新工作副本,然后才允许您提交更改以确保不会丢失任何内容。

为了确保您没有破坏任何东西并且所有以前的错误修复都没有被破坏,您应该使用代码审查单元测试和其他实践。持续集成是保持软件健康的好方法。