Предлагаем патч для контрибного модуля на drupal.org

Главные вкладки

ivnish 19 января в 12:33
4

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

Рассмотрим несколько вариантов: "Классический" (делаем патч) и "современный" через Merge Request на примере моего модуля Simple Comment Notify.

Делаем патч

В первую очередь нужно создать issue на drupal.org, если нужного issue еще не создано. Нам нужен будет номер issue и номер будущего комментария с патчем согласно "Patch naming conventions"

Для того, чтобы сделать патч, сначала нужно скачать модуль с drupal.org, но не просто архивом, а через git. Переходим на вкладку "Version control", выбираем нужную ветку и жмем кнопку "Show", чтобы показать строку для клонирования репозитория.

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

Запускаем

git diff > scn-123456-2.patch

где
scn - машинное имя проекта
123456 - номер issue
2 - номер комментария к которому вы будете прикладывать патч

После создания файла с патчем можно будет удалить папку с этим модулем, а сам файл патча нужно прикрепить к вашему комментарию к issue.

Готово! Теперь мейнтейнер модуля сможет проверить ваш патч и принять его, если всё ок.

Делаем Merge Request

Для того, чтобы сделать Merge Request, сначала нужно скачать модуль с drupal.org, но не просто архивом, а через git. Переходим на вкладку "Version control", выбираем нужную ветку и жмем кнопку "Show", чтобы показать строку для клонирования репозитория.

Далее нужно создать issue на drupal.org, если нужного issue еще не создано.

Затем нужно создать issue fork

Потом нужно нажать на кнопку "Show commands" и она покажет как добавить ссылку на remote ветку только что созданного issue fork и переключиться на нее

Вносим изменения в модуль и коммитим их в ветку issue fork, делаем git push

Возвращаемся в issue. Жмем кнопку "Open Merge Request"

Готово! Теперь мейнтейнер модуля сможет проверить ваш MR и принять его, если всё ок.

Автор

ivnish Drupal FullStack Developer, модератор drupal.ru

Комментарии

Аватар пользователя dillix dillix 19 января в 13:50

Андрей, спасибо что собрал всю информацию в 1 месте. Добавь еще информацию про interdiff'ы и reroll'ы для ядерных патчей.

Аватар пользователя zniki.ru zniki.ru 23 января в 10:00

Привет. Спасибо за статью. Хочу добавить что метод с патчами до сих пор работает. И если я нахожу issue где уже есть патчи, то я просто добавляю новый патч. Не уверен что это правильный подход, поделитесь как вы поступаете в такой ситуации?
Хотел бы попросить добавить ссылки на оригинальные инструкции на английском. Потому что они могу меняться со временем, и чтобы всегда можно было свериться с оригиналом.

Аватар пользователя ivnish ivnish 25 января в 21:59

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