Наша линейка программных продуктов требует разработки и поддержки нескольких версий программного обеспечения одновременно. Мы относимся к Git новичкам и недавно приняли Git Flow, чтобы воспользоваться модель ветвления Driessen. У нас очень небольшая команда разработчиков программного обеспечения с несколькими специализированными разработчиками (все мы носим много шляп) и нет "интеграционного гуру".
В большинстве поисков появилось мало конкретных советов о том, как адаптировать Git и Git Flow к нашим потребностям. Выяснилось, что Git Flow не подходит для одновременной поддержки нескольких версий. В одном из связанных обсуждений на SO есть ответы, указывающие, что отдельные имена ветвей должны использоваться для отслеживания истории отдельных версий. Эта и связанные стратегии устраняют Git поток, если он не изменен; см. наши ограничения команды выше по той причине, почему это не является практичным для нас.
Ключевой вопрос заключается в том, что другие считают хорошим подходом для максимально возможного внедрения разветвляющейся модели Driessen, поддерживая несколько строк выпуска?
ОБНОВЛЕНИЕ:
Переопределение ответов ниже (особенно @Rasmus) с более целенаправленным поиском и внутренними обсуждениями по нескольким вариантам приводит к следующему решению, которое мы реализуем, и которое я предлагаю в качестве одного из подходов, которые могут иметь отношение к аналогичным группам при аналогичных условия.
Мы не будем продолжать использовать Git Flow. Вместо этого мы применим модель Driessen к каждой отдельной строке выпуска в репо, предваряя каждое имя ветки своей предполагаемой версией, например:
r1.5/develop
Все версии проекта содержатся в репозитории Git. Запуск новой версии проекта состоит в создании небольшого набора новых долгоживущих ветвей, предваряемых строкой выпуска (например, r1.6/develop
и, в нашем случае, r1.6/release
; no master
с ее импликацией единственного действующего хорошего строительного состояние).
Мы устанавливаем один центральный публичный репозиторий для каждого проекта на сервере, который станет основным средством для обмена кодами через локальные ссылки репо remote
. Толчок к этому репозиторию означает код, который готов к употреблению другими. Объединение RX.Y/develop
в, а затем нажатие ветки RX.Y/release
означает код, предназначенный для выпуска. feature
, hotfix
, et. и др. ветки обрабатываются аналогичным образом. История слияния/фиксации ветки для данной строки выпуска является чистой и понятной. Мы не хотим, чтобы типичная стратегия репо с Git заключалась в том, чтобы избежать сложности слияния таких репозиториев, которые со временем могут расходиться в структуре.
В некоторых графических файлах Git (например, SourceTree) эта структура ветвей распознается и отображается как иерархическая, что помогает понять историю проекта верхнего уровня из структуры ветвей.
Извините, что не голосовал ни за какие ответы; моя репутация на SO еще не минимальна для этого.