Когда вы работаете самостоятельно или с небольшой школьной командой проекта, требования к контролю источника довольно низкие. Вам не нужно беспокоиться о том, чтобы сохранить здоровые сборки постоянно, или влияние сломанных сборки может оказать на других. Но история сильно отличается, когда кто -то работает в крупных инженерных командах. Таким образом, большинство инженерных групп полагаются на правила защищенных филиалов GitHub, чтобы обеспечить стабильность применения.
Одним из наиболее распространенных ограничений, которые разработчики используют в защищенных ветвях GitHub, состоит в том, чтобы потребовать проверки состояния перед слиянием. Это гарантирует, что CI успешно завершен до объединения изменений в защищенную ветвь (обычно мастер или основной).
Есть еще одно ограничение, которое требует, чтобы филиалы были актуальны перед слиянием. Это гарантирует, что запросы на притяжение были проверены с последним кодом перед слиянием в защищенной ветви. Эта подсказка обычно отображается в запросе на привлечение, просив разработчиков обновить их филиал. Эта настройка реже используется сегодня, и мы рассмотрим, почему.
Пример
Итак, какой смысл иметь ветви, прежде чем слияние? Я недавно столкнулся с этим сценарием, так что позвольте мне объяснить с примером:
Допустим, Джозеф и Эшли работают над веб -приложением для службы заказа еды. Они работают над функцией, чтобы предложить скидку для пользователей, которые будут заказывать заранее.
PR #1 : Джозеф сделал следующее изменение, чтобы вычислить скидку, предлагаемую пользователям.
PR 2 : Эшли добавляет новую конечную точку API, которая будет использоваться для зарядки пользователей.
Как вы можете себе представить, изменения независимо выглядят довольно безопасно и пройдут тест, но при совокупности вместе сломают сборку по мере изменения подписи argid_order.
Эти типы сценариев очень распространены в крупных командах, где несколько инженеров будут работать над одной и той же кодовой базой. В этих случаях безопаснее обеспечить ограничение, которое требует, чтобы филиалы были актуальны перед слиянием.
Побочный эффект
Прежде чем пойти и включить эту ручку в GitHub, вы должны понять один побочный эффект от использования этой конфигурации. Я помню, как мы включили его, инженеры начали тратить кучу времени, играя в Rebase-Athon. Итак, в приведенном выше примере, скажем, и Эшли, и Джозеф готовы объединить изменения. Теперь, если они не общаются друг с другом, они могут оба переиграть свои ветви с последним мастером и ждать, пока CI закончится. Кто бы ни заметил, что готовый CI объединит изменения, оставив другого разработчика, чтобы начать процесс Rebase с нуля.
Это может быть оптимизировано, используя пользовательское действие GitHub для поддержания ветвей. Каждый раз, когда объединяется PR, может быть запускается действие GitHub для обновления остальных ветвей. Некоторые компании внутренне создали систему для управления всем этим процессом, например, Отправка в Uber или Очередь слияния в Shopify Анкет Есть также некоторые версии подключенных и игровых концепций, которые я использовал в прошлом, называется Mergequeue Анкет
Суть в том, что по мере того, как ваша команда растет, оптимизация процесса слияния кода может стать критической. Эта настройка GitHub, чтобы ограничить филиалы, чтобы быть актуальными до того, как слияние может показаться немного накладным расходом, но окупится, чтобы дать вам и вашей команде спокойствие.
Оригинал: «https://dev.to/ankitxg/this-branch-is-out-of-date-1hb6»