Answers:
支持人员提供的Magento补丁将在后面附加各种日志app/etc/applied.patches.list
。我不知道补丁“脚本”执行该操作的时间或时间。CE补丁似乎也可以做到这一点。
这是我经常处理的事情(现在我正在研究),但是很遗憾,到目前为止,这是一个完全手动的过程-我们有一个自动化过程,标记每个文件,这些文件可能会在我们最初的自动审核中进行修改,一个新的支持客户。然后,我们让某人比较这些文件,并排除任何明显的误报(例如,空格更改)。
然后,有趣的部分-我们团队的资深成员与Magento一起工作了一段时间,必须查看结果以确定是否有任何修改后的文件可能是补丁的结果。我们已经考虑过更新系统以检查我们知道/可以使用的所有补丁,这可能对CE有用,但是在EE上则更具挑战性,因为EE支持有时会直接发布补丁永远不会发布任何其他方式或以一致方式进行分类的客户端。
因此,当我们进行此级别的审核时,我们将依赖于过去使用这些补丁程序的经验+常识(即,是否只是对API端点的更改?如果是这样,那么更改后的端点是否存在于更新版本中?如果是,这是一个补丁,可以忽略)。
从理论上讲,将CE下载页面等上的所有修补程序应用于所有适用的CE版本并进行检查比较简单(FYI,我们不使用diff作为第一遍-我们使用散列,部分是因为我们将这项技术内置到了可以远程检查站点而无需先下载该工具的工具中。这将排除大多数补丁,但是对于未发布到CE的公共下载区域或EE的客户端/受保护下载区域的任何CE或EE补丁仍然没有帮助。这将要求Magento制定一致的政策,即向所有客户提供所有补丁,并将这些补丁发布到我们可以得到的地方。
因此,不幸的是,在事物的Magento方面发生变化之前,我不认为有100%的自动化方法。
git diff depot/master origin/master
。挑战是.gitignore。另一个选择是将版本克隆到单独的目录中,然后app/code/core
在其上复制站点目录。git diff -w
然后会告诉你。
我不认为最初在项目回购中包含Magento并不是一个好主意,以防您管理的客户超过2-3个。由于将应用系统补丁与核心黑客混在一起总是很容易的。
在我看来,最好的选择是拥有一个带有版本标签的作曲家Magento存储库镜像,该镜像指向特定的Magento版本,并应用可能的官方补丁。
同样,通过Composer通过与版本匹配您的Magento安装的版本号介绍它们的安装,也将使维护自己的文件补丁(例如用于高负载网站的Mage_Core_Model_Config和其他一些文件)更加容易。
因此,在这种情况下,将所有客户项目升级到修补的Magento代码,只会导致作曲者文件的版本增加。此外,将项目代码与核心区分开来,将迫使您的开发人员不要破解核心。
至于补丁和黑客的定义,我宁愿这样称呼它:
因此,通过将核心移至单独的存储库,您将确保您仅具有根据项目1的补丁版本。并且可以轻松地通过composer将自己的补丁安装到本地代码池中,因此您拥有根据点3的所有内容。和4您可以在项目存储库中创建一个git commit钩子,以禁止任何代码提交到该目录中。