Как вы вносите исправления в ядро ​​Drupal?

10

Как правильно добавлять патчи в ядро ​​Drupal?

Допустим, я нашел ошибку в ядре Drupal, исправил ее и создал патч . Как мне отправить это?

Если ошибка в Drupal 7, я должен также исправить это в Drupal 8 и отправить два патча? Относится ли это также к ошибкам / улучшениям документации?

Все патчи также требуют юнит-теста?

mpdonadio
источник
3
В настоящее время я ищу ответы, предполагая, что у меня уже есть аккаунт на drupal.org, я знаю, как использовать git, знаю, как проверить ядро, и знаю, как создавать git-патчи. Получив хорошие ответы, мы можем комментировать или добавить ответ, чтобы обрисовать в общих чертах этот процесс.
mpdonadio
Поскольку это является ответом на проблему, которую основной сопровождающий поднял по адресу meta.drupal.stackexchange.com/questions/2325 , почтовое уведомление будет применено. Нам нужно хорошее краткое изложение процесса, особенно по вопросам, указанным выше. Ответы, которые просто ссылаются на другие страницы, будут опущены и / или удалены. Я надеюсь, что этот вопрос послужит ресурсом, на который мы можем указать пользователям DA, когда они обнаружат проблему с ядром.
mpdonadio

Ответы:

6

Если ошибка в Drupal 7, я должен также исправить это в Drupal 8 и отправить два патча?

Если ошибка присутствует в разрабатываемой версии (в данном случае Drupal 8) и в предыдущей версии (Drupal 7), то эту ошибку следует сначала исправить в текущей разрабатываемой версии, а затем в предыдущей (ых) версии (ях).

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

Рабочий процесс, который следует:

  • Сначала патч создается и передается на рассмотрение для самой последней версии, даже если он все еще находится в стадии разработки (например, в случае Drupal 8)
  • Как только этот патч применяется к Drupal, патч, который применяется к предыдущей версии, создается и отправляется на рецензирование.

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

Смотрите также: Политика Backport .

Относится ли это также к ошибкам / улучшениям документации?

Да, это так. Также в этом случае, если разрабатываемая в настоящее время версия удалила функцию / метод, на который ссылается документация, необходимо предоставить исправление для предыдущей версии.

Все патчи также требуют юнит-теста?

Если патч для документации, он не требует тестов. Тестовый бот, работающий на http://qa.drupal.org, проверяет код Drupal после применения патча; если в патче присутствуют синтаксические ошибки (например, из-за того, что комментарий закрыт до необходимого), то тестовый бот сообщит об ошибке патча до запуска тестов.

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

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

киамлалуно
источник
Может ли та же проблема содержать исправления для нескольких версий ядра?
mpdonadio
1
Если проблема касается более чем одной версии, она может содержать исправления для каждой интересующей версии.
kiamlaluno
Это всегда тот случай, когда патч D8 представлен сначала, а затем версия D7? Или есть случаи, когда уместно подавать обе заявки одновременно?
mpdonadio
Вы можете отправить патчи для двух разных версий, но патч, который применяется первым, относится к самой последней версии. Лучше сначала создать патч для более новой версии, так как патч может потребовать изменений.
kiamlaluno
3

Каждая страница проекта на drupal.org имеет вкладку «Контроль версий» вверху. Он дает не только отличный обзор всех параметров репозитория кода для конкретного проекта, но и все примеры команд git также адаптированы для проекта. Вы даже можете интерактивно изменить его на определенную версию тоже.

Для ядра Drupal вы найдете эту страницу на http://drupal.org/project/drupal/git-instructions

Затем, когда вы создали свой патч, вы просто прикрепляете файл патча к проблеме, которая объясняет, что делает ваш патч.

Следует отметить две важные вещи: убедиться, что патч заканчивается на «.patch» и установить статус «Требуется проверка». Это так, что тест-бот заметит это и автоматически запустит свой тест.

Новый код всегда должен сопровождаться тестами .

Обратите внимание, что это возможно отключить по проектам, а некоторые делают. Для ядра Drupal он включен, поэтому все патчи будут протестированы.

Вы можете найти больше на http://drupal.org/contribute/development .

tsvenson
источник
Это хорошее начало.
mpdonadio