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

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

   888888             .d8888b.    .d8888b.  
"88b d88P Y88b d88P Y88b
888 .d88P 888
888 888 888 8888" 888d888b.
888 `Y8bd8P' "Y8b. 888P "Y88b
888 X88K 888 888 888 888
88P .d8""8b. Y88b d88P Y88b d88P
888 888 888 "Y8888P" "Y8888P"
.d88P
.d88P"
888P"
Зарегистрируйтесь для добавления материалов без проверки.