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

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

 888     888  Y88b   d88P                     
888 888 Y88b d88P
888 888 Y88o88P
Y88b d88P Y888P 888 888 888 888
Y88b d88P 888 888 888 `Y8bd8P'
Y88o88P 888 888 888 X88K
Y888P 888 Y88b 888 .d8""8b.
Y8P 888 "Y88888 888 888
888
Y8b d88P
"Y88P"
Зарегистрируйтесь для добавления материалов без проверки.