Подтвердить что ты не робот

В чем заключается цель "интеграционной ветки"?

Если стратегия ветвления состоит из n ветвей функций, ветки "master" (mainline) и "интеграции". Какова цель интеграции? Почему тестирование и интеграция не могут выполняться в самой ветки функции?

4b9b3361

Ответ 1

Потому что это ветвь функции. Он должен содержать только изменения, относящиеся к одной функции. Интеграционная ветвь - это то, где вы объединяете несколько функций для тестирования, перед окончательным нажатием на мастер.

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

Ответ 2

Одна из основных причин, по которым я часто вижу необходимость в "интеграции", - это когда ваши ветки функций являются непроверяемыми сами по себе. По моему опыту, это обычно связано с зависимостью базы данных. Или рассмотрите проект веб-сайта, поддерживаемый базой данных... скажем, его приложение JSP, размещенное в BEA Weblogic, обратно в базу данных Oracle на 60 ГБ; Это потребует много оборудования, чтобы дать каждой ветки функции свой собственный BEA Weblogic и экземпляр Oracle для тестирования. Вместо этого, как правило, легче разрабатывать как можно лучше в ветки функций, но переходить в ветвь интеграции для полного тестирования QA, где QA необходимо выполнять на полном веб-сервере и базе данных.

Ответ 3

Чтобы быть более конкретным, почему именно "разделение - это хорошо": Целью отрасли интеграции является определение того, работают ли новые функции не только самостоятельно, но и в сочетании с другими новыми функциями. Это означает, что они могут и не быть, функции могут вызвать конфликты, требующие времени для решения.

Однако вы все равно можете начать развертывание подмножества новых функций в ветке mainline, поэтому вы не блокируете все функции, потому что несовместимость между ними.

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

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