Поставщик magento 2 git diff & apply patch

Главным образом, этот вопрос относится к git с Magento 2. У меня есть работающий проект Magento 2, и я установил расширение с помощью github repo - https://github.com/Adyen/adyen-magento2.

В моей текущей ситуации я должен отладить это расширение и проверить его на своем удаленном сервере. Я поставил этот репозиторий и создал патч, например, для файла cc_debug.patch. Теперь я добавил этот патч в мой корневой каталог на локальном сервере. Затем, если я выполню патч, используя git apply --apply --directory=vendor/adyen/module-payment/ cc_debug.patch это делает трюк и изменяет файлы в каталоге vendor. Я перенес изменения в репозиторий, и из-за сценария развертывания этот файл был перемещен на удаленный сервер.

Теперь у меня есть доступ только для чтения через удаленный сервер, и.git не инициализирован. Если я наложу исправление на удаленный сервер, оно, безусловно, будет выполнено, но если я нажму в следующий раз, из-за сценария развертывания поставщик будет обновлен, а изменения, примененные исправлением, будут потеряны. Вот, как я знаю, некоторые зацепки, но у меня недостаточно знаний о зацепках.

Я предполагаю, что мне нужно создать ловушку после развертывания в моем локальном репозитории git, как показано ниже:

#!/bin/sh

patchfile = "cc_debug.patch"
patchingdirectory = "vendor/adyen/module-payment/"
if [ -f "$patchfile" ]
then
    git apply --apply --directory=$patchingdirectory $patchfile
fi

Теперь я не могу подключиться к удаленному репо (даже не инициализированному), чтобы это решение не сработало для меня. Или, как я знаю, пост-обновление относится к удаленному (поправьте меня, если я ошибаюсь), поэтому я предполагаю, что изменения будут выполнены на удаленном сервере из-за этой ловушки, но если я снова клонирую на другом локальном компьютере, мне придется снова создайте исправление после развертывания, так что это не идеальный случай.

Что может быть для меня решением применить патч при каждом запуске скрипта развертывания? [Примечание: скрипт развертывания не в моих руках, так как он выполняется веб-зацепками, предоставленными Magento через github. Итак, я предполагаю, что должен быть какой-то веб-крючок, с помощью которого мне придется применить патч, и это опять-таки мое отсутствие знаний.] Я уверен, что у кого-то такая же ситуация, как и у меня. Пожалуйста, ведите меня. ТИА.

2 ответа

Решение

Наконец, я нашел точку входа, где я могу добавить свои хуки сборки. Я изменил.magento.app.yaml поверх корня каталога Magento 2 и добавил хук сборки, как показано ниже:

hooks:
# We run build hooks before your application has been packaged.
build: |
    php ./bin/magento magento-cloud:build
    patch -p1 --directory=vendor/adyen/module-payment/ < cc_debug.patch #This is the line I have added.

Возможно, вы можете использовать плагин для композитора, такой как http://github.com/cweagans/composer-patches чтобы применять патчи. Я сам использую это для применения выбранных патчей ядра, которые еще не вошли в основные релизы.

Другие вопросы по тегам