Мы используем git-flow для разработки с интеграцией, QA и живыми средами. Это не работает для нас - мы часто имеем несколько функций в параллельном развитии разрозненными командами и регулярно обнаруживаем, что некоторые функции готовы идти вживую, чтобы освоить, а другие функции уже были объединены с веткой разработки, но еще не были достаточно интегрированы испытания. Затем мы завершаем выпуск, пока все функции в конвейере не протестированы и не замораживаются на время, что является неудобством для разработчиков, которые работают над новыми функциями. Некоторые люди предлагали использовать только одну ветку и разрабатывать с помощью флагов функций, но это создает свой собственный набор проблем.Каков правильный способ обработки нескольких одновременных функций в параллельной разработке?
Есть ли хороший способ связывания коммитов, чтобы они могли переноситься вперед как группа? У нас есть каждая функция на отдельной ветви, но эта группировка теряется, когда ветвь функции объединяется для разработки. Я думаю, что это поможет сохранить целостность ветки, а затем объединить ее в мастер, когда эта функция была протестирована и готова к работе вживую, но это не кажется легким.
Мы также открыты для перехода на другую систему управления версиями, если есть что-то еще, что облегчит это, но любая система, в которой мы оказались, должна также поддерживать выборочное слияние на основе успеха или неудачи автоматических тестов (мы используем jenkins для этого сейчас).
Каков наилучший способ решения этой проблемы?
Я прочитал это. Похоже, что добавление флагов функций будет значительно усложнять кодовую базу, увеличить время нарастания для новых разработчиков, быть подверженным ошибкам в реализации и удалении, усложнять тестирование и увеличивать количество сообщений * требуется * среди разных команд. Более рекомендуемое чтение: http://swreflections.blogspot.com/2014/08/feature-toggles-are-one-of-worst-kinds.html – fields
Если ваши разработчики работают над общей кодовой базой, то увеличение связи является исключительно хорошей вещью , Если вы хотите ограничить связь, разделите базу кода на абсолютно независимые области ответственности, которые имеют хорошо разработанные и обратные совместимые API. (Но в большинстве случаев это будет очень негибким) – jil
Повышенная коммуникация с разработчиками - это хорошая вещь в целом, но искусственное увеличение объема обязательной коммуникации путем введения структурных издержек, требующих ее, не является большой целью. – fields