9

主要是,这个问题特定于带有 Magento 2 的 git。我有一个正在工作的 Magento 2 项目,并且我已经使用 github repo - https://github.com/Adyen/adyen-magento2安装了一个扩展。

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

现在,我只有远程服务器的读取权限,并且没有初始化 .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 提供的 webhook 执行的。所以,我假设必须有一些 webhook 使用它我必须应用补丁,这又是我缺乏知识。] 我相信有人和我的情况一样。请指导我。TIA。

4

2 回答 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.
于 2016-09-14T11:17:57.743 回答
0

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

于 2016-09-08T19:20:24.593 回答