В чем преимущество использования запросов извлечения вместо простого объединения ветки в мастер без таковой? Особенно в команде, где все разработчики имеют полный доступ к мастеру.
В чем преимущество использования запросов извлечения вместо простого объединения ветки в мастер без таковой? Особенно в команде, где все разработчики имеют полный доступ к мастеру.
Ответы:
Запросы на извлечение предусматривают проверки и противовесы, даже если кто-либо может подтолкнуть к мастеру.
Самым большим преимуществом является то, что они предоставляют возможность для проверки кода. Ответственный за выполнение проверки может посмотреть на код и тесты и убедиться, что они соответствуют любым рекомендациям организации или группы. Существуют и другие причины для проверки кода - обучение, поиск дефектов или улучшений, перекрестное обучение команды в системе, предоставление тестировщикам «белого ящика» системы.
Если человек, выполняющий проверку, знаком с архитектурой системы, он может убедиться, что изменения соответствуют архитектурному видению системы, особенно если у всей команды может не быть долгосрочного видения.
Выработка привычки использовать запросы извлечения может также помочь вашей команде, если вы в будущем решите, что вся команда не должна иметь доступа к мастеру. Если ваша команда становится больше, и особенно если у вас есть члены команды, которые являются новичками в продукте и / или новичками в Git, отказ от предоставления им доступа к мастеру может быть безопаснее для целостности продукта.
Я думаю, что выполняя функции разветвления и разветвления, а также разветвленные запросы, мало что дает преимущества, когда вы все работаете в одной команде или компании.
Они предлагают хороший механизм и интерфейс для проверки кода, но также усложняют и замедляют весь процесс «завершения работы». Особенно, если у вас есть много мелких функций, каждая из которых ожидает проверки, объединения, а затем все остальные объединяются с мастером снова, чтобы вытащить изменения и т. Д. Если у вас есть большие функции, тогда их становится сложно просмотреть, поэтому вы попали в тупик ,
Сказав, что вы можете делать пул-запросы между филиалами в одном репо. Вам не нужно разветвляться или иметь разные разрешения.
Кроме того, вы должны рассмотреть всю методологию и рабочий процесс. У вас также есть система тикетов, CI, автоматические приемочные тесты и т.д.? Ваши обзоры кода обеспечивают жизненно важную проверку перед вводом кодов в действие, или это просто упражнения с штампом, которые становятся ненужными из-за других проверок в вашем рабочем процессе?
Существует наблюдение под названием Закон Конвея, которое гласит:
организации, которые разрабатывают системы ... вынуждены производить проекты, которые являются копиями коммуникационных структур этих организаций.
Какое это имеет отношение к запросам на включение? Тяговые запросы являются основным каналом связи в критическом соединении для вашего кода. Они предоставляют возможность для анализа, автоматического тестирования и улучшения, прежде чем код перейдет к следующим этапам тестирования и производства, где эти изменения намного сложнее отбросить, и тратит гораздо больше времени на гораздо больше людей.
Аналогичным образом, закон Конвея предлагает, если вы хотите иметь микросервисную архитектуру с четко разделенными областями автономной ответственности и четко определенными интерфейсами, то каналы связи вашей организации должны отражать архитектуру, которую вы хотите достичь. Это означает, что небольшие группы из 5-10 человек должны иметь прямой доступ к любому микросервису, и любой, кто не входит в эту группу, должен пройти запрос на извлечение. Это гарантирует, что люди, наиболее знакомые с микросервисом, будут рассматривать и консультировать его.
Когда у вас большая организация, где все имеют прямой коммитный доступ, ваши каналы связи с наименьшим сопротивлением настраивают вас на создание большой грязной архитектуры.
Запросы на извлечение выглядят как бремя, если вы ничего не обменяете взамен. Я работал в среде, где я ничего не могу сделать в течение недели, потому что сборка всегда не работает, и я работал в среде, где кто-то отправляет запрос на извлечение, и мне даже не нужно просматривать его, потому что он сломал CI build, и я говорю вам, они стоят каждой секунды усилий.
Карл Билефельдт совершенно прав. Я бы добавил: все дело в качестве.
Во многих (большинстве?) Магазинах нет формальных процессов для управления развитием, что приводит к следующему: «Я работал в среде, где я ничего не могу сделать в течение недели, потому что сборка всегда не работает, и я работал в средах, где кто-то отправляет запрос на извлечение, и мне даже не нужно его просматривать, потому что они нарушили сборку CI, и я говорю вам, что они стоят каждой секунды усилий ".
Это действительно стоит усилий.
Мы используем запросы извлечения для проверки кода - код не следует объединять с основной веткой разработки (обычно в нашем случае это «разработка», но иногда «мастер»), не выполняя запрос на извлечение. Мы не навязываем это жестко с помощью средств управления хранилищем, но это потому, что нам не нужно - наши разработчики достаточно зрелы, чтобы не злоупотреблять процессом.