Недавно у нас возникла проблема, из-за которой руководство нашего приложения отложило функцию для нашего веб-приложения (автоматическую регистрацию), потому что они чувствовали, что начало было слишком «холодным», но они хотели, чтобы все другие функции, над которыми мы работали, были запущены.
Проблема в том, что эта функциональность была объединена с разработкой, когда она была закончена, вместе со всеми другими функциями, которые мы ожидали запустить в следующем выпуске, поэтому мы не могли просто объединить dev -> test -> master, как мы обычно делаем.
Как мы могли избежать этой проблемы?
Ответы:
Одним из подходов является функция пометки его. Он может жить в базе кода, но может быть отключен по конфигурации.
Другой вариант - сделать возвратный коммит, который отменяет слияние функций, чтобы он больше не разрабатывался. Можно создать новую ветвь, которая отменяет возврат, и оставить ее в ожидании слияния позже. Если вы используете Github Pull-запросы, вы можете легко сделать это с помощью кнопки «Revert Merge» в объединенном Pull-запросе.
источник
Feature Toggling
, как назвал это Док Браун. Это также позволяет нам тестировать функцию (или ее отсутствие) в непроизводственной среде. Иногда эти функции добавляют к существующим функциям, и в этом случае у нас должны быть модульные тесты как для старого, так и для нового набора функций. Каждый модульный тест просто устанавливает флаг на то, что ему нужно для текущего теста.С точки зрения процесса, выяснить:
Скорее всего, по пути произошли перепады в общении. Это важно иметь, потому что когда это не работает, ваш процесс (ы) разработки будет основан на ложном и неправильном понимании бизнес-требований.
источник
Забудьте на мгновение проблему с вашим руководством и представьте, что у вас уже есть «функция автоматической регистрации» в вашем последнем производственном выпуске, глубоко интегрированная в вашу кодовую базу. Теперь вы получаете новое требование добавить «выключение» для «автоматической регистрации». Как бы вы справились с этим в вашем рабочем процессе Git?
Я полагаю, вы бы объявили «отключение автоматической регистрации по конфигурации» просто как дополнительную функцию (это просто форма переключения функций ), поэтому она должна плавно интегрироваться в ваш рабочий процесс. Вы можете оценить усилия, если хотите, можете использовать для этого ветку функций (или нет, если вы не используете ветки функций для таких проблем). И вы определенно можете использовать описанный вами поток «merge dev -> test -> master».
И это именно то, как вы можете справиться с этим в вашей текущей ситуации. С точки зрения рабочего процесса git, не должно иметь значения, поступает ли запрос на изменение от руководства для версии 1.0, или если запрос на изменение является новым желанием клиента для версии 2.0.
источник
Это именно та проблема, которая у меня возникла с Gitflow и GitHub, и кажется, что с веб-приложениями это происходит часто - или, скорее, как норма. Похоже, вы бы решили эту проблему задним числом (упомянуто выше) или упреждающим образом (пример ниже).
Я создал «ветки связки» в дополнение к стандартным веткам gitflow. Пакет состоит из всех функций, которые готовы для UAT / QA. Список функций uat / qa создан. Они объединяются во временный пакет, и этот пакет развертывается в uat / qa. Любое исправление ошибки происходит в исходной ветви функций, и это возвращается обратно в пакет и развертывается. Это отделяет грядущий выпуск, а также позволяет тестировать эти функции вместе, прежде чем они найдут путь к ветви разработки. Те ветки, которые одобрены, получают запрос на разработку в соответствии с процессом gitflow. Готовые тестовые функции могут быть добавлены или удалены из временной ветви пакета и повторно развернуты.
К минусам относятся управление списком комплектов и добавление веток другого типа; однако, кроме ретро-исправления, которое, я думаю, уже слишком поздно, кажется, что это более жизнеспособное решение.
С дополнением GUI, возможно, было бы оптимальным отметить галочки для ветвей компонентов для каждого развертывания пакета - с учетом автоматизации.
источник