2016-04-06 2 views
2

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

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

Мы также открыты для перехода на другую систему управления версиями, если есть что-то еще, что облегчит это, но любая система, в которой мы оказались, должна также поддерживать выборочное слияние на основе успеха или неудачи автоматических тестов (мы используем jenkins для этого сейчас).

Каков наилучший способ решения этой проблемы?

ответ

0

Некоторые люди предложили использовать только одну ветвь и развитие с функцией флагов вместо

Вы определенно должны слушать этих людей. По моему опыту это лучший способ интегрировать программное обеспечение в любой крупный проект.

Это не только то, что он будет делать ваш релиз планирование легче, но и различные другие преимущества, такие как:

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

Рекомендуемая литература: Martin Fowler about Feature branches

+0

Я прочитал это. Похоже, что добавление флагов функций будет значительно усложнять кодовую базу, увеличить время нарастания для новых разработчиков, быть подверженным ошибкам в реализации и удалении, усложнять тестирование и увеличивать количество сообщений * требуется * среди разных команд. Более рекомендуемое чтение: http://swreflections.blogspot.com/2014/08/feature-toggles-are-one-of-worst-kinds.html – fields

+0

Если ваши разработчики работают над общей кодовой базой, то увеличение связи является исключительно хорошей вещью , Если вы хотите ограничить связь, разделите базу кода на абсолютно независимые области ответственности, которые имеют хорошо разработанные и обратные совместимые API. (Но в большинстве случаев это будет очень негибким) – jil

+0

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

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