Существует несколько способов применить одноразовый патч к проекту PHP на основе Composer. Классический способ заключается в использовании cweagans/композитор-патчи
, как вы узнали.
эта статья подробно объясняет, как использовать Composer Patches для исправления ядра Drupal.
Вы можете использовать этот метод для применения этот патч, что является подходом, рекомендованным @catch в этот комментарий, включив это в свой композитор.json
:
"дополнительный": {
"enable-patching": правда,
"патчи": {
"друпал/ядро": {
«Разрешить настройку открытых идентификаторов сортировки Views»: «https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff»
}
Как упоминает @catch:
@Giuseppe87 вы можете использовать https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff - хотя, чтобы применить стабильный патч, лучше загрузить его в каталог /patches в вашей кодовой базе, а затем добавить локальный путь патча в файл composer.
Чтобы следовать этим инструкциям, откройте Терминал и CD
в корневой каталог вашего проекта Drupal 9.2, затем выполните следующие команды:
Патчи $ mkdir
$ cd патчи
$ wget https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff
$ mv 54.diff configure-views-exposed-sort-identifiers.patch
Чтобы использовать локальный файл патча в своем проекте, а не удаленный патч на Drupal.org, ваш композитор.json
будет выглядеть так:
"дополнительный": {
"enable-patching": правда,
"патчи": {
"друпал/ядро": {
«Разрешить настройку открытых идентификаторов сортировки Views»: «patches/configure-views-exposed-sort-identifiers.patch»
}
Использование локального файла здесь считается наилучшей практикой, так как оно имеет некоторые преимущества перед использованием удаленного файла. Это и более безопасно, и более эффективно.
Есть еще один, относительно новый, метод установки патчей путем открытия Форк выпуска и мой первоначальный ответ рекомендовал этот метод, но здесь это не обязательно.
РЕДАКТИРОВАТЬ: После прочтения ваших комментариев ниже, похоже, ваша проблема в том, что !54 никогда не применялся к ветке 9.2 до перебазирования.
Возвращаясь к MR на GitHub, вы можете откатить последние два коммита, выбрав «Версия 9» MR:
Но даже в этом случае цель установлена на 9.3, и неясно, как ее изменить с помощью веб-интерфейса.
Вам нужно будет следовать Git-инструкции для клонирования ядра Drupal в локальную среду разработки:
$ git клон https://git.drupalcode.org/project/drupal.git
$ cd друпал
Затем вернитесь в свою очередь задач и просмотрите инструкции, чтобы проверить ветку для вилки задач:
$ git remote add drupal-2897638 [email protected]:issue/drupal-2897638.git
$ git fetch друпал-2897638
Также проверьте ветку 9.2.x:
$ git checkout -b '9.2.x' --track drupal-2897638/'9.2.x'
Теперь вы хотите сгенерировать разницу между состоянием проекта при фиксации eaa43b0c
и 9.2.х
ветвь:
$ git оформить заказ eaa43b0c
$ git diff drupal-2897638/9.2.x > configure-views-exposed-sort-identifiers.patch
Это создаст патч между указанной вами фиксацией и веткой 9.2.x.
Тем не менее, это все еще может быть не то, что вы хотите. Патч, сгенерированный этим методом, состоит из более чем 230 000 строк кода:
$ wc -l configure-views-exposed-sort-identifiers.patch
230134 configure-views-exposed-sort-identifiers.patch
Возможно, указанный вами коммит git всегда основывался на ветке 9.3.x. Похоже, предстоит проделать еще много работы, чтобы воссоздать основную работу для этого патча и аккуратно применить его к ветке 9.x.
Трудно сказать наверняка, потому что eaa43b0c
уже на 93 000 строк кода опережает ветку 9.3.x:
$ git diff 9.3.x | wc -l
93794
Легко принять как должное, сколько труда люди вложили в это программное обеспечение с открытым исходным кодом, на которое мы все полагаемся. Если вам требуются функциональные возможности, предоставляемые этим патчем, самый простой способ получить их — обновить проект Drupal до ветки 9.3.x немного раньше, чем вы бы предпочли. Тогда патч будет применяться корректно, и вам не нужно будет разбираться в этих 93 000 строк кода.
И последнее замечание — diff, сгенерированный Merge Request 54, составляет менее 1000 строк кода:
$ wc -l 54.diff
936 54.разн.
Возможно, вы сможете проверить ветку 9.x и применить каждое из этих 936 изменений вручную, чтобы сгенерировать файл исправления в вашей локальной сети. Это все равно потребует много работы, но, возможно, меньше работы, чем некоторые другие варианты.
Это не обычная ситуация; большинство Composer Patches на порядки меньше этого монстра.
Удачи!