magento 2供应商git diff&应用补丁

时间:2016-09-02 15:55:32

标签: hook magento2 webhooks git-apply

主要是,这个问题是针对Magento 2的git特有的。我有一个正在运行的Magento 2项目,我使用github repo安装了一个扩展 - https://github.com/Adyen/adyen-magento2

在我目前的情况下,我必须调试该扩展,并且必须检查我的远程服务器。我已经分发了那个回购并创建了一个补丁说例如cc_debug.patch文件。现在,我已将该补丁添加到本地服务器上的根目录。然后,如果我使用git apply --apply --directory=vendor/adyen/module-payment/ cc_debug.patch执行补丁,它就可以完成并修改供应商目录下的文件。我将更改推送到repo,并且由于部署脚本,该文件已移至远程服务器。

现在,我只对远程服务器进行了读取访问,并且没有初始化.git。如果我确实在远程服务器上应用补丁,它肯定会被执行但是如果我下次推送,由于部署脚本供应商将被重新生成并且补丁应用的更改将丢失。据我所知,这里有一些勾引图片,但我对钩子缺乏了解。

我认为我必须在我的git local 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

现在,我无法将该钩子推送到远程仓库(甚至没有初始化),因此这个解决方案对我不起作用。或者我知道更新后是特定于远程的东西(如果我错了就纠正我)所以我猜测由于这个钩子会在远程服务器上执行更改但是如果我再次在另一台本地机器上克隆,我必须再次创建部署后补丁,这不是理想的情况。

每次部署脚本执行时,应用补丁的解决方案是什么? [注意:部署脚本不在我手中,因为它是由Magento通过github提供的webhooks执行的。所以,我假设必须有一些webhook使用我必须应用补丁,这又是我缺乏知识。]我相信有人和我的情况相同。请指导我。 TIA。

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

也许您可以使用像http://github.com/cweagans/composer-patches这样的作曲家插件来应用补丁。我自己正在使用它来应用尚未进入主线版本的选定核心补​​丁。