Работа с патчами для Drupal проектов через Git

Для работы с патчами нам потребуется Git и консольное окно Git Bash. Проблема у меня возникла, когда я попытался применить патч, который был создан в репозитории, состоящем из файлов модуля, на полный проект из файлов Drupal. Сейчас объясню разницу на пальцах.

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

  • git apply --index path/file.patch - применить патч;
  • git apply -R path/file.patch - откатить патч;

Применение патча для полного проекта

Да, в вышеописанном ничего сложного и нового нет. С небольшими проблемами я столкнулся, когда потребовалось применить патч на полный проект, репозиторий которого состоит из ядра Drupal и нескольких модулей. Допустим, что наш вышеописанный патч был создан для модуля Webform. Чтобы его применить:

  • закидываем патч (webform-patch-name.patch) в папку с модулем;
  • cd /sites/all/modules/contrib/webform - переходим через консольное окно в папку с модулем;
  • git apply --directory=sites/all/modules/contrib/webform webform-patch-name.patch - накатить патч;
  • git apply -R --directory=sites/all/modules/contrib/webform webform-patch-name.patch - откатить патч.

Для любителей все делать через PhpStorm: левый клик предоставляет опцию меню "Apply patch". Только вот как сделать реверт патча я пока не нашел. Найдете - поделитесь!

Применение патчей в PhpStorm

Вот такая небольшая шпаргалка на случай, когда придется столкнуться с патчами для Drupal проектов.

Добавить комментарий

 d8b  888     888            888       888 
Y8P 888 888 888 o 888
888 888 888 d8b 888
888 Y88b d88P .d8888b 888 d888b 888
888 Y88b d88P d88P" 888d88888b888
888 Y88o88P 888 88888P Y88888
888 Y888P Y88b. 8888P Y8888
888 Y8P "Y8888P 888P Y888


Зарегистрируйтесь для добавления материалов без проверки.