Ветвление против слияния в управлении исходным кодом - PullRequest
2 голосов
/ 10 февраля 2011

Кто-нибудь может объяснить простым языком разницу между этими двумя подходами?Ссылка на хороший четко написанный учебник также будет достаточно.

спасибо.

Ответы [ 4 ]

2 голосов
/ 10 февраля 2011

Это не разные подходы, а разные стороны одной и той же монеты.

Если вы разрабатываете с использованием веток, вам необходимо со временем объединить их.


Чтобы ответить на вопрос:

A ответвление - это копия выбранной части исходного кода, используемая для конкретной работы (функция, проект, что угодно).

A merge - это процесс синхронизации двух ветвей и (обычно) избавления от одной ветви в процессе.


Из википедии, Контроль версий :

Ветвь

Набор файлов под управлением версиями может быть разветвленным или разветвленным в определенный момент времени, так что с этого времени две копии этих файлов могут развиваться с разной скоростью или разными способами.независимо друг от друга.


Слияние

Слияние или интеграция - это операция, в которой два набора изменений применяются к файлу или набору файлов.Вот некоторые примеры сценариев:

  • Пользователь, работающий с набором файлов, обновляет или синхронизирует свою рабочую копию с внесенными изменениями и проверяет в хранилище других пользователей.
  • Пользователь пытается зарегистрировать файлы, которые были обновлены другими, так как файлы были извлечены, и программное обеспечение контроля версий автоматически объединяет файлы (обычно после запроса пользователя, следует ли ему продолжить автоматическое объединение, и вв некоторых случаях это возможно только в том случае, если объединение может быть четко и разумно разрешено).
  • Разветвленный набор файлов - проблема, существовавшая до исправления ветвления в одной ветви, и затем исправление объединяется вдругая ветвь.
  • Ветвь создается, код в файлах редактируется независимо, а обновленная ветвь позднее включается в единую объединенную магистраль.
1 голос
/ 11 февраля 2011

Я не думаю, что вы можете "противостоять" слиянию и ветвлению.

Вы переходите, когда хотите изолировать усилия по разработке, как я объяснил в " Когда вы должны переходить?".

Ключевой вопрос, который нужно задать, если у вас есть ветка, в которой вы (и другие разработчики) можете перейти к (refactor? Extension? Bugfix? ...), это:

«Что вы должны делать с содержанием этой ветви?»

Другими словами, вы оставляете это в покое или реинтегрируете все его эволюции в другую ветку.И это слияние.
Но одного слияния недостаточно.Что объединяет цель - это рабочий процесс : откуда и куда вы объединяете свой код?

Определите свой рабочий процесс, и вы действительно воспользуетесь тем, что SCMо.

1 голос
/ 10 февраля 2011

Ветвление запускает новую линию разработки в зависимости от состояния проекта, из которого вы выполняете ветвление.

Слияние - это сообщение об изменениях от одной линии разработки или между линиями разработки к другой.

Так ясно, что вам нужны оба в разные моменты времени.

Ссылки:

0 голосов
/ 11 февраля 2011

На простом английском языке ветвление - это «ветвь дерева», где дерево - это ваш программный продукт, а ветвь - это особая часть, которая «выходит» из центральной колонны, но имеет свои особенности. *

В реальной жизни вы создаете ветку своего программного обеспечения, если вам приходится поддерживать двух клиентов с немного разными пожеланиями. Затем у вас есть основной продукт (A) и продукт для конкретного клиента (B и C), которые в основном являются базовым продуктом с небольшими изменениями.

Для слияния берется этот филиал для конкретного клиента (B или C) и его реинтеграция с вашим основным продуктом (A). Это удобно, если вы реализовали хорошую функцию - ветвь B, которую вы хотели бы иметь для всех, поэтому вы объединяете ее с основным продуктом, A.

...