Если стратегия ветвления состоит из n ветви функций, «мастер» (mainline) и ветвь «интеграции». Какова цель интеграции? Почему тестирование и интеграция не могут выполняться в самой ветви функции?Какова цель «интеграционной ветви»?
ответ
Потому что это особенность отрасли. Он должен содержать только изменения, относящиеся к одной функции. Интеграционная ветвь - это то, где вы объединяете несколько функций для тестирования, перед окончательным нажатием на мастер.
Конечно, у вас нет есть, чтобы отделить вещи таким образом. Вы можете сделать интеграцию на ветвях функций, точно так же, как вы может делать всю свою работу над мастером. Но разделение проблем - это хорошо.
Одна из основных причин, по которой я часто вижу необходимость в ветке «интеграции», - это когда ваши ветви признака не поддаются проверке сами по себе. По моему опыту, это обычно связано с зависимостью базы данных. Или рассмотрите проект веб-сайта, поддерживаемый базой данных ... скажем, его приложение JSP, размещенное в BEA Weblogic, обратно в базу данных Oracle на 60 ГБ; Это потребует много оборудования, чтобы дать каждой ветви функции свой собственный BEA Weblogic и экземпляр Oracle для тестирования. Вместо этого, как правило, легче разрабатывать как можно лучше в ветви функций, но переходить в ветвь интеграции для полного тестирования QA, где QA необходимо выполнять на полном веб-сервере и базе данных.
Чтобы быть более конкретным, почему именно «разделение является хорошим»: Целью отрасли интеграции является определение того, работают ли новые функции не только самостоятельно, но и в сочетании с другими новыми функциями. Это означает, что они могут и не быть, функции могут вызвать конфликты, которые требуют времени для решения.
Однако вы все равно можете начать развертывание подмножества новых функций в ветке mainline, поэтому вы не блокируете все функции, потому что несовместимость между ними.
Теперь, если вы уже объединили ветки функций друг с другом, вам будет сложно слить их отдельно в магистраль. Это не совсем невозможно, но это, безусловно, хлопот (я пробовал).
Если в ваших ветвях функций содержатся основные отторжения кода или они значительно перекрываются в отношении областей кода, над которыми работает, вы можете даже захотеть принять эту идею дальше и иметь ветви, которые объединяют две функции перед слиянием их где-нибудь еще, включая ветвь глобальной интеграции, т.е. е. имеют несколько уровней интеграции. Конечно, это, как правило, не является желательной ситуацией, но вы не сможете ее избежать, и возникающие конфликты могут быть намного проще разрешить, если вы щедры с ветвями интеграции.
- 1. Какова цель "?"
- 2. Какова цель опции rebate git merge?
- 3. Какова цель std :: rank?
- 4. Какова цель $ _POST?
- 5. Какова цель IApplicationBuilder.New()
- 6. Какова цель метода IntStream.empty()?
- 7. Какова цель IAsyncStateMachine.SetStateMachine?
- 8. Какова цель пакета
- 9. Какова цель заявления `pass`?
- 10. Какова цель "@SuppressWarnings (" unchecked ")"?
- 11. Какова цель этого javascript?
- 12. Какова цель константы PHP_DEBUG?
- 13. Какова цель configSections?
- 14. Какова цель сортированных наборов?
- 15. Какова цель python setuptools?
- 16. Какова цель «pm2 save»?
- 17. Какова цель метода _createElement?
- 18. Какова цель character_set_connection?
- 19. Какова цель ServicePointManager.ServerCertificateValidationCallback?
- 20. Какова цель теста Очистка
- 21. Какова цель макроса: GL_UNPACK_ROW_LENGTH
- 22. Какова цель Object.prototype.toString()?
- 23. Какова цель Array.GetLowerBound (int)?
- 24. Какова цель onSurfaceChanged?
- 25. Какова цель функции fseek (..)?
- 26. Какова цель модульного тестирования?
- 27. Какова реальная цель application.ini
- 28. Какова цель демонанизации?
- 29. Какова цель: после?
- 30. Какова цель clojure.core.reducers/уменьшить?
Каков типичный рабочий процесс с использованием этой стратегии ветвления? Получите код «разработчик завершен» в ветви функции и перейдите на ветку интеграции, чтобы создать выпуск для QA? – Ben
@Ben: В принципе, да. Первым шагом, однако, было бы объединить с последними изменениями в мастер, особенно если эта функция уже в течение некоторого времени. Фактически, функция должна регулярно сливаться с мастером, чтобы избежать больших плохих слияний в конце. Также обратите внимание, что не обязательно иметь ни одну окончательную интегральную ветвь. Одна ветвь интеграции может объединить некоторые функции для версии * x *, в то время как другая ветка интеграции одновременно используется для сопоставления серии исправлений для версии * x * - 1. Короче говоря, ветвление должно отражать ваш рабочий процесс - ничего больше, ничего Меньше. –
Как только развитие переместилось в интеграционную ветвь, при каких обстоятельствах будет еще больше сделано обязательство в ветви функции? – Ben