Magento的SUPEE-6788补丁不能与Git / Github一起使用

时间:2015-11-04 19:17:31

标签: git security magento patch

在我的localhost上成功安装SUPEE-6788补丁并将更改推送到开发之后,我注意到我的开发环境中出现了一些问题,我在我的Localhost上没有看到。

我发现的第一个问题是我的联系表单块都没有出现。

然后我注意到它并不仅限于联系表格,它在任何地方都有一个表格(通过CMS页面)。

在深入挖掘(异常堆栈跟踪)之后,我发现在调用'permission_block'之前我错过了一个不存在的表。

经过一番挖掘后,我发现补丁中发生了许多数据库更新,这些更新在推送到开发时没有运行(通过升级脚本)。直接查看补丁,我可以看到升级脚本实际上已更新,并且配置文件反映了这些更新(版本号和所有)。但出于某种原因,他们没有跑。

现在我有点陷入两难境地了。我不确定发生了什么更新以及哪些更新没有(在开发环境中)。

Magento发布的SUPEE补丁是不是要与Git / Github一起使用?

我是否需要将修补程序单独应用于每个构建,而不是在修补后推送构建?

1 个答案:

答案 0 :(得分:4)

  

SUPage补丁Magento版本是否不适合与Git / Github一起使用

SUPEE补丁中没有任何内容可以阻止您使用Git / GitHub来管理您的存储库。

那就是说 - 你的问题不是相当有意义,我认为这可能是由于对如何应用这些数据库升级的误解。

Magento Setup Resource scripts允许模块开发人员更新数据库。每当Magento加载未缓存的 HTTP请求时,它将

  1. 检查app/etc/(code|community|local)

  2. 中所有已声明模块的版本
  3. 将该版本与core_resource

  4. 中存储的版本进行比较
  5. 如果文件系统上安装了更新版本,请在sql/文件夹中运行相应的安装资源脚本

  6. 更新core_resource以指明已安装的版本

  7. 根据您的提问,听起来好像发生以下情况之一

    1. 您从源上传了更新的文件,但从未在生产中清除过缓存,且设置资源脚本从未运行

    2. 您上传了更新的文件,确实清除了缓存,但生产系统的某些内容阻止了完全运行的脚本。由于MySQL没有针对所有结构更改命令的事务更新,因此设置资源脚本可能无法完全运行,但仍然使用相同版本更新core_resource表。

    3. 我首先将core_resource中的扩展版本与文件系统上的版本(config.xml中)进行比较

      此外,您可以使用sys:setup:incremental程序的mysqldump命令手动应用更新而不清除缓存。这也可以帮助您诊断哪些故障(如果有)可能导致问题。

      最后,由于您有一个可用的开发版本,作为最后的手段,您可以使用struct ss {} // a structure let myArr1: [Any] = [4, [ss(), ss()], [5, [4.5, ss()]]] // Don't compile 转储每个数据库的结构,然后与视觉差异工具(如n98-magerun)进行比较确定缺少哪些表/行。你需要对此应用一些智能(因为dev可能还有其他不需要的东西)