2010-12-13 3 views
13

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

ответ

13

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

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

+1

Каков типичный рабочий процесс с использованием этой стратегии ветвления? Получите код «разработчик завершен» в ветви функции и перейдите на ветку интеграции, чтобы создать выпуск для QA? – Ben

+0

@Ben: В принципе, да. Первым шагом, однако, было бы объединить с последними изменениями в мастер, особенно если эта функция уже в течение некоторого времени. Фактически, функция должна регулярно сливаться с мастером, чтобы избежать больших плохих слияний в конце. Также обратите внимание, что не обязательно иметь ни одну окончательную интегральную ветвь. Одна ветвь интеграции может объединить некоторые функции для версии * x *, в то время как другая ветка интеграции одновременно используется для сопоставления серии исправлений для версии * x * - 1. Короче говоря, ветвление должно отражать ваш рабочий процесс - ничего больше, ничего Меньше. –

+0

Как только развитие переместилось в интеграционную ветвь, при каких обстоятельствах будет еще больше сделано обязательство в ветви функции? – Ben

2

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

3

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

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

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

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

Смежные вопросы