# Запросы на слияние

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

#### Требования к запросам на слияние <a href="#pull-request-expectations" id="pull-request-expectations"></a>

Команда Dynamo ожидает, что запросы на слияние будут соответствовать следующим требованиям.

* Придерживайтесь [стандартов кодировки](https://github.com/DynamoDS/Dynamo/wiki/Coding-Standards) и [стандартов именования узлов](https://github.com/DynamoDS/Dynamo/wiki/Naming-Standards).
* Включите модульные тесты при добавлении новых возможностей.
* При исправлении ошибки добавьте модульный тест, который показывает, в чем проблема текущего поведения.
* В рамках открытого запроса ограничьтесь обсуждением одной проблемы. Создайте новый запрос для другой или связанной темы.

Чего не следует делать:

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

#### Заполнение шаблона запроса на слияние <a href="#filling-out-the-pull-request-template" id="filling-out-the-pull-request-template"></a>

При отправке запроса на слияние используйте [шаблон по умолчанию](https://github.com/DynamoDS/Dynamo/blob/master/.github/PULL_REQUEST_TEMPLATE.md). Перед отправкой запроса на слияние убедитесь, что его назначение четко описано и все условия выполнены:

* После такого запроса на слияние состояние базы кода улучшится.
* Документация соответствует [стандартам](https://github.com/DynamoDS/Dynamo/wiki/Coding-Standards).
* Все необходимые тесты прилагаются.
* Пользовательские строки, если таковые имеются, извлекаются в файлы `*.resx`.
* Все тесты можно выполнить с использованием конвейера непрерывной интеграции с самообслуживанием.
* Снимок изменений пользовательского интерфейса, если таковые имеются.
* Изменения в API соответствуют принципам [семантического управления версиями](https://github.com/DynamoDS/Dynamo/wiki/Dynamo-Versions) и записаны в документе [Изменения API](https://github.com/DynamoDS/Dynamo/wiki/API-Changes).

Команда Dynamo назначит рецензента для запроса на слияние.

#### Процесс проверки запроса на слияние <a href="#pull-request-review-process" id="pull-request-review-process"></a>

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

* Группа разработчиков Dynamo проводит встречи для рассмотрения запросов на слияние раз в месяц, и рассмотрение начинается с наиболее ранних.
* Если для запроса на слияние требуются изменение от владельца, у владельца запроса на слияние есть 30 дней на ответ. Если к следующей встрече владелец не выполнил никаких действий, запрос на слияние будет закрыт командой или, если его сочтут очень полезным, будет передан кому-то из команды.
* Запросы на слияние должны соответствовать шаблону Dynamo по умолчанию.
* Запросы на слияние, в которых не полностью заполнены шаблоны Dynamo и выполнены не все условия, не рассматриваются.

#### Отбор фиксаций для Dynamo Revit <a href="#cherry-picking-dynamo-revit-commits" id="cherry-picking-dynamo-revit-commits"></a>

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