Похоже, что большинство ответов касается Subversion, так что здесь у вас есть один о Git (и других DVCS).
В распределенной системе контроля версий, когда вы объединяете одну ветвь с другой, вы создаете новую фиксацию слияния, которая запоминает, как вы разрешили слияние, и запоминает всех родителей слияния. Эта информация просто отсутствовала в Subversion до версии 1.5; для этого вам пришлось использовать дополнительные инструменты, такие как SVK или svnmerge. Эта информация очень важна при повторном слиянии.
Благодаря этой информации распределенные системы контроля версий (DVCS) могут автоматически находить общего предка (или общих предков), также известного как база слияния, для любых двух ветвей. Взгляните на схему исправлений ASCII-art ниже (я надеюсь, что она не была слишком сильно искажена),
---O---*---*----M---*---*---1
\ /
\---*---A/--*----2
Если мы хотим объединить ветку «2» в ветку «1», общим предком, который мы хотели бы использовать для генерации слияния, была бы версия (фиксация), помеченная «A». Однако, если система управления версиями не записывает информацию о родительских элементах слияния («M» - это предыдущее слияние тех же ветвей), она не сможет обнаружить, что это фиксация «A», и она найдет фиксацию «O». вместо этого в качестве общего предка (база слияния) ... который повторит уже включенные изменения и приведет к большому конфликту слияния.
Распределенная система управления версиями должна была делать это правильно, т.е. они должны были сделать слияние очень простым (без необходимости отмечать / отмечать родительские элементы слияния и предоставлять информацию о слиянии вручную) с самого начала, потому что это способ заставить кого-то другого получить код в проект заключалось не в том, чтобы дать ему / ей доступ к фиксации, а в том, чтобы извлечь из его / ее репозитория: получить коммиты из другого репозитория и выполнить слияние.
Вы можете найти информацию о слиянии в Subversion 1.5. в Выпуск Subversion 1.5 Примечания. Примечания: вам нужны разные (!) Параметры для объединения ветки в магистраль, чем для объединения магистрали в ветку, иначе. не все ветви равны (в распределенных системах контроля версий они [обычно] технически эквивалентны).
person
Community
schedule
27.01.2009