Работа с патчами для 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 проектов.

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

           Y88b   d88P   .d8888b.    d888   
Y88b d88P d88P Y88b d8888
Y88o88P 888 888
88888888 Y888P .d88P 888
d88P d888b .od888P" 888
d88P d88888b d88P" 888
d88P d88P Y88b 888" 888
88888888 d88P Y88b 888888888 8888888


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