После миграции кода Drupal в GitLab, появилась отличная возможность создавать “мерж” реквесты для работы над задачами. Это намного более удобно, чем старый способ, когда мы создавали патчи и загружали их на drupal.org в задачу для ревью. Те, кто работал над проектами в GitHub, давно оценили прелесть использования реквестов.
В данное время стандартом считается использование composer для управления модулями сайта. Если нужно внести изменения в код модуля с drupal.org или сторонюю библиотеку, обычно используется патчинг через composer используя cweagans/composer-patches:
{
"require": {
"cweagans/composer-patches": "~1.0",
"drupal/core-recommended": "^9",
},
"extra": {
"patches": {
"drupal/core": {
"Add startup configuration for PHP server": "https://www.drupal.org/files/issues/add_a_startup-1543858-30.patch"
}
}
}
}
Реквесты с GitLab и GitHub можно вывести в виде патча, добавив .diff к URL реквеста, например, https://gitlab.com/weitzman/drupal-test-traits/-/merge_requests/90.diff
или https://patch-diff.githubusercontent.com/raw/drush-ops/drush/pull/4758.diff
.
Такие адреса можно использовать в composer чтобы патчить модули, но к сожалению, это рискованно.
Основная проблема в том, что реквесты могут быть изменены в любое время! Поэтому патч может оказаться сломанным в самый неподходящий момент или включать изменения, которые вы не планировали. Что еще хуже, в реквест могут быть добавлены изменения, через которые сайт может быть взломан!
Поэтому нельзя использовать патчи на основе реквестов, особенно на “живых” сайтах. Лучше сгенерируйте патч файл и используйте его. Так безопаснее.