В частности, я работаю над инструментом, который интегрирует DVCS и систему сборки, но я представляю себе проблему, с которой я столкнусь, возникнет для любого, кто разрабатывает «мета» инструмент (компилятор, VCS, система сборки, тестовый прогон и т. Д.), Который они хочу развиваться через "собачий корм" .
Мой вопрос: в процессе выпуска в стиле scrum с использованием ветвящегося рабочего процесса , в какой момент я начинаю использовать более новую версию инструмента в цикле разработки инструмента?
Я ищу процесс для создания баланса между:
постоянно использую
develop
версию инструмента: я обнаружил, что нарушаю свою собственную разработку по мере внесения изменений.постоянно используйте
master
версию инструмента: любые проблемы, которые я обнаруживаю с помощью собачьей упряжки, - это проблемы, которые уже были выпущены.
Ответы:
Первое, что нужно сделать, - это провести очень тщательные автоматические регрессионные тесты в автономном режиме. Сделайте прохождение этих тестов минимальным требованием к тому, что вы официально используете.
Во-вторых, вам нужен простой простой способ вернуться к предыдущей рабочей версии, если проблемы с вашими автоматизированными тестами не обнаруживаются.
Например, мое ядро Linux было на некоторое время исправлено. Я патчил и компилировал свое ядро на том же компьютере, на котором собирался его использовать, что означало, что я мог потерять свою среду разработки, если бы создал неисправное ядро. Поэтому я позаботился о том, чтобы в моем меню GRUB всегда оставалось заведомо исправное ядро, поэтому, если я ошибся, я вернулся к хорошей среде разработки с простой перезагрузкой.
Координировать это с командой сложно, но я полагаю, что это в основном вопрос о том, чтобы позволить кому-либо инициировать запасной вариант и сообщить причины. В управлении версиями, один из способов обозначить это будет что-то вроде
last_known_good
ветки, где-то междуdevelop
иmaster
в вашем рабочем процессе. Ничто не выталкивается туда, пока вы успешно не соберете сборку.источник
dogfood
), которая «где-то междуdevelop
иmaster
». Возможно,release
ветви должны исходить отdogfood
ветви.Если этот инструмент используется для производства программного обеспечения производственного качества (особенно, если оно используется рекурсивно, то есть для разработки самого себя), я бы увеличил ваши предварительные усилия по тестированию и подождал, пока собеседование не станет достаточно стабильным, чтобы вы Я уверен, что с его помощью вы не нарушите производственный код.
Если вам нужно подождать, пока мастер-версия будет иметь такой уровень доверия, пусть будет так.
источник
Git также является таким инструментом и, очевидно, также занимается собаками. Но он делает это в разной степени в разных средах. Общедоступные серверы работают только с релизом, в то время как разработчики обычно работают либо с
next
(это название git проекта для «разработки»), либоpu
(даже больше, чем разработкой). Любой разработчик , который блокируется какой - то проблемой может вернутьсяnext
илиmaster
или последнего выпуска , когда они заблокированы чем - то и главное хранилище не влияет, так что проблемы могут быть очищены путем ссылки на него.Модель ветвления похожа на приведенную выше с немного другими именами.
master
это то, из чего сделаны большие выпуски,maint
ветвь релиза для следующего выпуска,next
похожа на разработку с небольшим отличием в том, что функции могут быть объединены с мастером отдельно после того, как они уже в следующем, а не во всем следующем слиянии.Есть дополнительная ветка
pu
. Это создается путем слияния всех ветвей элементов, которые рассматриваются для интеграции вместеnext
(ветвь отбрасывается и воссоздается каждый раз). IIRC публикуется только в том случае, если он проходит тестовый набор. Последний раз, когда я смотрел, сопровождающий Junio запускал сценарии для его регулярного создания вручную, но такие сценарии могли запускаться при непрерывной интеграции каждую ночь, и я считаю, что Геррит даже создает его автоматически.Так что это ответ. Вы соберете большую версию для разработки, которую имеете в средах разработки, но используете предыдущий выпуск для создания релизов.
источник
pu
что-то?Основываясь на принятом ответе , я собираюсь расширить рабочий процесс ветвления, чтобы поддерживать ветки, подобные следующим:
master
: сливается сrelease-*
закрытиемdogfood
: ветви отmaster
; включает исправления, выявленные во время кормления собак; сливается сdevelop
момента, когда программное обеспечение считается «стабильным» для внутреннего использования; глава этой ветви может быть перенесен в прошлое, если это необходимоdevelop
: ветви отmaster
; включает текущие изменения, исправления, слиянияdogfood
иfeature-*
ветвиfeature-*
: ветви отdevelop
; включает в себя изменения для конкретной новой функцииrelease-*
: ответвления от того,dogfood
когда программное обеспечение считается «стабильным» для внешнего использования; включает в себя обновления документации и небольшие исправления до слияния сmaster
источник