Magento 2供应商Git差异和应用补丁

9

这个问题与Magento 2里的git相关。我有一个正在使用github repo的工作中的Magento 2项目,并安装了一个扩展https://github.com/Adyen/adyen-magento2

在我的当前情况下,我必须调试该扩展并在远程服务器上进行检查。 我已经fork了那个repo并创建了一个补丁,例如cc_debug.patch文件。 然后,我将该补丁添加到我的本地服务器根目录中。 如果我使用git apply --apply --directory=vendor/adyen/module-payment/ cc_debug.patch执行补丁,则会修改供应商目录下的文件。 我将更改推送到repo并由于部署脚本,该文件移动到远程服务器。

现在,我只能读取远程服务器,并且没有初始化.git。 如果我在远程服务器上应用补丁,它肯定会被执行,但是如果我下一次推送,由于部署脚本,供应商将重新生成,而通过补丁应用的更改将丢失。 在这里,我需要使用一些钩子,但我对钩子的了解不足。

我假设我必须在我的git本地repo中创建post-deploy hook,如下所示:

#!/bin/sh

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

现在,我无法将该钩子推送到远程仓库(甚至没有初始化),所以这个解决方案对我来说行不通。或者正如我所知道的,post-update 是特定于远程的(如果我错了,请纠正我),因此我猜测由于该钩子,更改将在远程服务器上执行,但是如果我在另一台本地计算机上再次克隆,则必须再次创建 post-deploy 补丁,这并不是理想情况。
对于我来说,每次执行部署脚本时应用补丁的解决方案是什么?[注意:部署脚本不在我的控制下,因为它由 Magento 在 Github 上提供的 Webhooks 执行。所以,我假设必须使用某些 Webhooks 应用补丁,这又是我的知识缺乏。] 我相信有人和我有相同的情况,请指导我。TIA.
2个回答

1

最后,我找到了可以添加构建钩子的入口点。我已经修改了Magento 2目录根下的.magento.app.yaml文件,并添加了以下构建钩子:

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.

0
也许你可以使用一个类似 http://github.com/cweagans/composer-patches 的 composer 插件来应用补丁。我自己正在使用它来应用一些核心补丁,这些补丁还没有被合并到主线版本中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接