主要是,这个问题特定于带有 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。