Как создавать и добавлять патчи на drupal.org

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

  1. Вы заводите Issue или Bug с описание проблемы (если такого еще нету).
  2. Пишите комментарий, к которому прикрепляете Ваш патч.
  3. Если Ваш патч будет одобрен, то он попадает в коммит, авторство которого будет принадлежать Вам.

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

drupal_patch_graphic.png

Создание патча

  1. Переходим на страницу модуля.
  2. Кликаем на "Version Control" под заголовком
  3. Выбираем dev версию, для которой мы хотим создать патч. Обычно это текущая верси модуля с суфиксом "-dev". Например, 7.x-2.x-dev. Если Вы работаете c git - Вам не нужно добавлять "-dev" к имени бренчи. Например, 7.x-2.x означает, что это dev бренч.
  4. Кликаете на кнопке "Show", чтобы убедиться в корректности команды "git clone".
  5. Копируете команду "git clone --branch ..."
  6. и выполняете ее в терминале, например:
    git clone --branch 7.x-2.x http://git.drupal.org/project/somemodule.git
    cd somemodule
  7. В директории с модулем или темой создаем новый локальный бренч и сразу переключаемся на него.
    git checkout -b [issue-number]-[issue-description]
    Пример: git checkout -b 1234-fix-for-header
    Чтобы проверить что все работает как ожидалось, говорим гиту показать список бренчей:

    git branch
          * 7.x-2.x
            1234-fix-for-header
  8. Звездочной отмечается текущий активный бренч. Для переключения между бренчами используем команду git checkout [branch-name].
  9. Теперь можно внести требуемые изменения в код модуля или темы. После чего можно просмотреть изменения, добавить новые файлы и сделать коммит с помощью следующих комманд:
    git status
    git diff
    git add new_file.php
    git commit -a
  10. Когда Вы будете готовы создать патч, перейдите в директорию с Вашим модулем или темой и с помощью "git diff" Для просмотра изменеий, которые попадут в патч:
    git diff 7.x-2.x
  11. Когда Вы все проверили, создаете патч с помощью следующей команды:
    git diff 7.x-2.x > [project_name]-[short-description]-[issue-number]-[comment-number].patch
  12. С чувством собственного удовлетворения заливаем патч на drupal.org и радуемся, что сделали свой вклад в Друпал сообщество.

Примечания:
-- [comment-number] в имени файла патча - это номер комментария на странице, а не его ID.
-- 'git clone' работает только в том случае, если папка еще не существует.

Применение патчей.

  1. Скачиваем патч в папку с модулем или темой и выполняем команду:
     git apply -v [patch-name.patch]
  2. Удаляем файл с патчем (чтобы в будущем случайно его не закоммитить):
    rm  [patch-name.patch]