Я не совсем понимаю, о чем вы спрашиваете.Когда вы объединяете две линии разработки (выполняете слияние), вы будете создавать коммит слияния , то есть ревизию, представляющую этот акт объединения двух линий истории.В Git и Mercurial такой коммит помнят оба родителя;в Subversion такая ревизия запоминает обе ревизии для всех файлов (если я правильно понимаю).
В большинстве случаев коммит слияния будет создан автоматически ;в Git (и я думаю также в Mercurial) используется трехстороннее слияние, где 3-й пункт (помимо советов обеих слитых линий разработки / веток) является общим предком.Subversion только в последнее время (начиная с версии 1.5, если я правильно помню) хранит информацию, необходимую для расчета базы слияния (без использования сторонних инструментов, таких как SVK или svnmerge).Обратите внимание, что, насколько я понимаю, Subversion объединяет файлы, в то время как Git и Mercurial объединяют редакции в целом.
Иногда автоматическое объединение завершается неудачно, и вам приходится разрешать конфликты вручную , а затем фиксировать завершениеслияниеЭто может произойти в любой системе управления версиями.
Независимо от того, было ли автоматическое слияние успешным или неудачным, сам процесс слияния (коммит слияния в Git и Mercurial) может привести к ошибкам. Возьмем, к примеру, ситуацию, когда одна сторона изменяет соглашение о вызовах для некоторой функции, а другая сторона добавляет другой сайт вызовов со старым API.Автоматическое слияние может завершиться успешно, но слияние приведет к ошибке, даже если обе линии разработки безошибочны.
Тем не менее git bisect может обнаружить, что это был коммит слияния (акт слияния)это привело к ошибке.