Рубрики
Uncategorized

Дело против запросов по тяги (и как их исправить)

Почему запросы на потяну не отличный выбор для Agile Workflow. Теги от Agile, DevOps, Git.

Запросы на тягу являются отраслевым стандартом, но что, если альтернатива значительно лучше?

Когда-либо так сильно держал мнение, что вы проигнорировали все, что доказало это неправильно?

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

Если бы мы допросили эти предположения, которые я часто называю ловушками — мы поняли, насколько утеряна производительностью, в проведении мирской, повторяющейся работой.

И это приводит меня к отличному примеру этого: Потягивание запросов Отказ Рост GitHub сделал их почти отраслевым стандартом того, как следует сделать развитие. Разработчики создают филиалы для их изменений и запросов файлов, чтобы их объединить.

Довольно просто, не так ли? Для стабильного проекта открытого исходного кода, который принимает взносы, ответ да. Это идеальный рабочий процесс для такого рода проекта. Но где просьбы о потяжете сбой разработчики — это проекты, необходимые ловкости. В быстронаправленной среде они налагают сильный налог на эффективность разработчика.

Рассмотрим пример: вы являетесь частью небольшой команды, и вы должны зафиксировать ссылку в вашем приложении, как будет выглядеть рабочим процессом запроса на тягу?

  1. Создайте новую ветку от Master.
  2. Оформить заказ вновь созданный ветвь.
  3. Создайте и нажать свое исправление.
  4. Если все в порядке, файл запрос на тягу.
  5. Получите это рассмотрение и объединено.
  6. Переключитесь обратно к мастеру.

Все время, в то время как ваша ветка может отказаться от мастера, нуждающихся в том, чтобы вы все еще находились в синхронизации. Для крошечного исправления разработчик должен был пройти несколько повторяющихся шагов. Представьте себе, что делать несколько исправлений, подобных таким образом, чтобы исправить орфографию, чтобы исправить ошибку CSS-и создавая, проверку, синхронизирующие ветки сама по себе является кусок вашей работы.

Вы могли бы получить ваши изменения, но всегда трудно их предвидеть (не удивительно, что у вас есть филиалы, такие как Bug-исправления ). Дополнительная проблема заключается в том, что есть добавленные накладные расходы создания ветвей выпуска и слияние их обратно в Master.

Конечно, у вас должен быть кто-то просматривает ваш код, но весь накладные расходы создания ветвей для небольших изменений ужасны — и, как мы бы увидели, избегали.

Рабочий процесс команды Google Chromium радикально отличается. Их разработчики вообще не создают ветви; Каждый совершает одинаковую ветку — мастер. В Почта Аарон Брудман, разработчик в команде Chrome пишет:

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

Это не будет работать в Chrome, потому что мы выпускаем каждый день. Мы не можем терпеть огромные кусочки нового кода внезапно появляться в багажнике, потому что он будет иметь высокий шанс снять канарцев или каналы DEV в течение длительного периода. Кроме того, багажник хрома движется так быстро, что не практично для разработчиков, чтобы быть изолированным на ветке в течение очень длинного. К тому времени, когда они слились, багажник будет выглядеть так иначе, что интеграция будет сложной и подвержена ошибкам.

(Кстати, это также называется Развитие на основе багажника ).

Идея может звучать ужасно, но имеет смысл. Google Chrome движется на быстрой темпе, и изолированные ветви затрудняют сохранение нескольких разработчиков в синхронизации. Сохранение всего в мастере гарантирует, что «все разработчики всегда работают с последним и величайшим источником. «Выпуски подбираются от коммитов в мастере. Вот как это может выглядеть:

Источник

Но как насчет незаконченных особенностей? Они защищены флагами/коммутаторами. Код отправлен, но он не виден конечным пользователям, пока флаг не будет включен. Эта практика не просто особенно в команде Chrome, она практиковалась в масштабе как в Facebook, так и в Google Company.

У Facebook есть инструмент, который они называют «привратником», который позволяет им контролировать, кто может видеть, какой код живет на службе в любой момент времени. Как указывает Росси, прямо сейчас на Facebook.com уже есть код для каждой крупной вещи Facebook собирается запустить в ближайшие шесть месяцев и дальше! Это привратник, который останавливает нас, увидев его.

Следующие 6 месяцев стоит функций в коде Facebook Прямо сейчас (но мы не видим)

Есть еще один аспект этого: обзоры кода. Вместо того, чтобы быть на основе филиала, они основаны на комми. Когда разработчик толкает фиксацию, они обязаны рассмотреть другие люди, которые имеют одинаковую область фокусировки. Когда одобрено, это может быть объединено.

Таким образом: каждый комбинирует на главных, незаконченных функциях спрятаны флагами, а отзывы кода основаны на комми.

В отличие от запросов на потяну, эта модель превосходит несколько способов.

  1. Это позволяет избежать накладных расходов (и познавательной нагрузки) создания ветвей и слияние их обратно.
  2. Это резко снижает шансы на грязные конфликты.
  3. Рабочий процесс выпуска гораздо проще, поскольку вы можете просто выбрать коммит от Master и отметьте его для выпуска.
  4. Создание отзывов кода, основанные на основании обязательств, чтобы рецензент проще просмотреть изменения (в отличие от огромного запроса на тягу).

Главное различие состоит в том, что вы видите коммитарию как единицу изменений, а не ветви, и это имеет всю разницу.

Следующий вопрос, можете ли вы принять тот же рабочий процесс, что и команда Chromium, если вы используете GitHub/Gitlab?

К сожалению, я не мог видеть, как вы можете иметь тот же стиль кода отзывы, что и Google. Gerrit — это инструмент с открытым исходным кодом Но почти невозможно использовать его с сопряжением с GitLab/github. Он должен быть установлен на сервере, а UI не нравится использовать.

Но можно построить альтернативу. Может быть инструмент, на который должен сначала разработчик их изменений, когда могут их просмотреть другие члены команды. Вы не можете подтолкнуть ваш коммит, пока ваши изменения не будут одобрены.

Если есть какие-либо предложения, разработчик должен будет изменить коммит (с использованием поправок или интерактивного перезагрузки) и снова подтолкнуть его. Это дает четкий вид на то, что было изменено, и рецензент понимает, если их предложения были включены. Когда рецензент одобряет коммит, его можно подталкивать к освоению.

Вы получаете преимущества проверки кода, не жертвуя всей всей настройкой. Звучит интересно? Я прототипирую что-то в этом роде. Вы можете Заполните эту форму Если вы хотите попробовать, когда он готов

Оригинал: «https://dev.to/shubhamjain/the-case-against-pull-requests-and-how-to-fix-it-533g»