У нас есть большой корпоративный проект, и у нас есть несколько этапов разработки. Мы используем гит. Ветвление выглядит так:
РАЗРАБОТКА -> СИДЕТЬ -> ПРОД
Ветка DEV является веткой разработки как есть. Когда разработка завершена, она передается в ветку SIT, а исходный код SIT используется QA для этапа тестирования. Для выпуска используется PROD.
Итак, вопрос: если DEV завершен, а SIT-тестирование начато и обнаружена ошибка, каков правильный поток?
1:
2:
Создайте ветку из DEV и отправьте исправление в DEV.
Отправка изменений из DEV в SIT
Какой поток правильный 1 или 2?
Я хочу знать лучшую практику
Обе стратегии можно использовать.
Опция 1
плюсы:
минусы:
Вариант 2
плюсы:
минусы:
Лично Мне нравится второй вариант, так как он более оптимизирован и прост в обслуживании в DEV. Вы также можете проверить эти рабочие процессы, чтобы получить некоторые другие идеи.
На этот вопрос нет «ИСТИННОГО» ответа, но как разработчик вы не должны изобретать велосипед. Уже существуют общепринятые стратегии ветвления, не зависящие от проекта:
Я бы порекомендовал прочитать их и решить вместе с вашей командой. И только применять эти потоки. Есть также инструменты для форсирования каждой стратегии.
Создайте ветку исправлений от SIT, исправьте там проблему. Если тест пройден, объедините его с SIT, а затем перебазируйте DEV из SIT.
SIT -> create branch fix/issue
QA PASS -> merge fix/issue into SIT -> rebase dev from SIT
Потоки Git сильно зависят от вашей среды разработки и стека. Github, Bitbucket и GitLab имеют свои рекомендации и лучшие практики.
Рекомендую прочитать все: поток GitHub, Рекомендации Bitbucket, GitLab потоки.
Как по мне, оба ваших варианта исправления не оптимальны и усложняют процесс. Создание дополнительной бесполезной ветки для бутфикса, чем создание нового слияния с SIT или DEV. Во всех этих операциях нет смысла. Что, если вы обнаружите новую ошибку в своей DEV-функции? Новые ветки|слияния?
Я рекомендую использовать поток Стабильное ветвление основной линии.
feature -> pull --rebase PROD & push -f -> remote/feature -> QA testing -> PROD
| |
FIX <--- <--- <--- bug
Шаг за шагом:
feature
ветку из prod
.feature
функционал/исправления.feature
завершите перезагрузку на последнюю prod
и принудительно нажмите.remote/feature
.remote/feature
, повторите шаги 2-4.remote/feature
в prod
.