Стандарт рабочих процессов Git для работы с несколькими проектами в ветке разработки - PullRequest
0 голосов
/ 19 марта 2019

Итак, это текущая проблема в нашей организации. У нас небольшая команда, которая работает в нескольких проектах одновременно.

У нас есть простой рабочий процесс, у нас есть ветка dev и master, где dev - это то, что в настоящее время находится в QA, а master - это то, что в данный момент находится в производстве (или готово к производству). Однако это создает проблемы, когда у нас есть, скажем, 3 функции в QA, и только одна из них готова к производству, а другие нет.

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

Существует ли стандартный рабочий процесс git, который лучше подходит для таких ситуаций? В этом блоге я прочитал решение, в котором предлагается создавать ветки dev для каждого проекта, но это не решит нашу ситуацию, когда в QA должно быть несколько проектов одновременно:

https://blog.logrocket.com/the-git-workflow-you-need-how-to-deal-with-multiple-teams-in-a-single-repository-faf5bb17a6e4

1 Ответ

1 голос
/ 19 марта 2019

ОБНОВЛЕНО - вопрос был изменен, чтобы указать, что проблема связана с состоянием нескольких функций, а не нескольких проектов, как было первоначально заявлено.Оригинальный ответ сохраняется ниже.


Существует множество конкурирующих рабочих процессов, которые работают для разных команд / проектов.Один довольно популярный рабочий процесс - это gitflow;вероятно, он лучше подходит для больших проектов, так как может показаться излишним для небольших / простых проектов, но опять же, для него есть достойная инструментальная поддержка.

В gitflow master - это "то, что было выпущено"и develop - это «то, что потенциально может быть выпущено прямо сейчас, если бы мы сделали релиз прямо сейчас» - так что вы не объедините функцию с develop до тех пор, пока она не пройдет тестирование QA.

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

С хорошей инфраструктурой вы могли бы потенциально развернуть данную ветвь функции в среде QA, когда будете готовы протестировать эту функцию.Чтобы получить наилучший возможный тест, вы можете либо объединить разработку в функцию до теста (возможно, затем отменить объединение позже), либо переместить функцию на develop перед тестом (если вы не возражаете против регулярного переписывания ветвей функций),Итак, если «все высвобождаемое плюс эта дополнительная функция» проходит тестирование, одна дополнительная функция становится «чем-то высвобождаемой», и вы можете объединить ее с develop.

На практике в большинстве проектов, которые я видел, компромиссв некотором смысле, полагаясь на предположение, что функции не будут мешать друг другу (что, конечно, чрезмерно оптимистично, но все же может работать в большинстве случаев).


Стандарт вGit должен поместить каждый проект в свой собственный репозиторий (несмотря на недавнюю, и даже ошибочную, тенденцию «monorepos»). Ситуация, которую вы описываете, является отличным примером того, почему.

Это не значит, чтоВы не могли разработать какую-либо стратегию ветвления, которая дает тот же эффект от одного репо, но то, что вы, скорее всего, получите, это отдельные «логические репо», каждый из которых содержит свой собственный отдельный набор ветвей,в пределах «одного репо».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...