Прежде чем углубляться в детали, давайте рассмотрим следующий сценарий:

Вы стоите в открытом поле, где начали строить дом своей мечты.

Дом - это тщательно спроектированный шедевр с прочным фундаментом и красивым фасадом, гармонирующим с элегантным интерьером.

За домом вы видите длинную очередь людей, все в руках держат маленькие белые конверты. Кажется, они очень хотят помочь по дому.

Здесь два почтовых ящика.

Первый почтовый ящик просто помечен как проблемы («Я не собираюсь об этом говорить, у меня много собственных»).

Второй имеет загадочное название - Pull Requests.
И да, теперь мы поговорим о втором почтовом ящике.

Я надеюсь, что вы все теперь поняли суть дела. Так что есть хорошие самаритяне, которые помогут вам с вашим проектом, и они полны идей !!
Они энергичны, находчивы и обладают супер-образным воображением. ;)

Итак, что вы делаете?

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

А что вы видите через некоторое время?

Вы перегружены запросами и теряете контекст и контроль над своей кодовой базой… .упси, я имел в виду дом !!

Прекрасный фундамент, заложенный вами, теперь превратился в интересный фундамент, в котором назревает множество вещей.

Например, вы недавно одобрили запрос на постройку ванны, вы посмотрели на дизайн и сказали, что это было бы круто !!
Следующее, что вы видите, это то, что она была построена перед вашим домом и с нет водопровода !!

Человек представил, что вы принимаете ванну посреди природы, и вы были увлечены этой идеей и упустили из виду детали, а сам архитектор был настолько поглощен приведением вещей в действие, что он упустил из виду несколько основных деталей! !

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

Начнем,

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

Разработчик может сообщить о предлагаемых изменениях кода и их целях посредством подробной документации (PRD, TRD) или других средств связи.

Для улучшения процесса проверки кода настоятельно рекомендуется предоставлять описания для запросов на вытягивание. Описания четко отвечают:

  • Что могут ожидать рецензенты при просмотре представленного кода?
  • Какие стандарты рассмотрел разработчик перед тем, как отправить свой код на рассмотрение?
  • Подумал ли разработчик о предстоящем пути?

А из-за огромного объема нашей работы некоторые из этих вещей может стать трудно отслеживать, и, следовательно, шаблоны PR.

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

Как мне это настроить?

Создайте файл с именем pull_request_template.md в корневом каталоге вашего проекта. Вы можете добавлять контрольные списки в соответствии с характером вашего репо.

Ниже приведен образец шаблона, который я использую в своих проектах:

<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->

## Motivation and Context
<!--- Why is this change required? What problem does it solve? Link to PRD, TRD?-->
<!--- If it fixes an open issue, please link to the issue here. Add the Linear issue number. -->


## Types of changes
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)

## Backward compatibility
<!--- Does it affects exiting contracts? Have you checked your dependent systems?  -->
- [ ] API
- [ ] DB

## How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->

## Migration and deployment details (if appropriate)
<!-- add your deployment strategy, for eg: do you need to run some migrations, backfilling -->


## Screenshots (if appropriate):


## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My code follows the code style of this project.
  - [ ] I have checked the **Code Quality Reports**.
- [ ] My change requires a change to the documentation.
  - [ ] I have updated the documentation accordingly.
- [ ] I have added tests to cover my changes.
- [ ] All new and existing tests passed.
- [ ] I have updated my dependent systems.
- [ ] My change may put additional load on the system
  - [ ] I have load tested the system

И БУМ !! Теперь всякий раз, когда кто-то создает новый PR, шаблон описания заполняется заранее, и можно добавлять соответствующие детали.

Итак, что мы поняли?

Настройка PR-шаблона - это очень небольшая задача, но она имеет большое значение для поддержания качества вашей кодовой базы. Иногда это может устранить необходимость в RCA, поскольку некоторые вещи можно обеспечить, следуя контрольному списку, и упущения могут быть устранены.