创建并将修补程序应用于magento 2

创建并将修补程序应用于magento 2

2019年4月23日出版 in 优雅的骆驼
一步结账
2019年4月22日
更多网站,同样的员工,维护较少
5月23日2019年

本文介绍了如何为Magento 2.创建和应用补丁2.本文为您提供’使用作曲家安装Magento(列出的第二种方法 “如何获得Magento软件” table here),这是我在生产网站上运行Magento的任何商家推荐的方法。

如果您使用Composer安装Magento’S不可能以一种方式直接编辑核心文件,这将导致这些编辑持续保留,因为它们永远不会致力于版本控制,而是用Composer延伸。但是,在Composer插件的帮助下 作曲家补丁, 它’可以以在版本控制中将跟踪这些更改的方式应用修补程序。

修补Magento核心的最常见用例是你’曾遇到过核心虫子,那’s the use case we’重新在本文中假设。有罕见的场合可能需要解决其他事情,例如调整核心功能或做点什么’没有偏好,插件,事件或其他标准的Magento开发方法。但是,只有在所有其他选项已经耗尽时,这不应该轻松完成。

首先,让我们’谈论您可以创建/获取补丁的一些方法:

创建修补程序

GitHub.

关于magento 2的伟大事物之一是它的事实’一个带有非常活跃的社区的开源平台。如果你有机会’在核心应用程序中遇到了一个问题,别人也有。如果您在上搜索问题或拉动请求 玛托托 2 github. 帐户,您通常可以找到拉出请求或看起来像它将解决问题的特定提交。例如,如果你’使用magento 2.1.9或更早,您可能会遇到它的问题’s不可能以负数量保存管理员中的产品。如果您在Magento Github上搜索此问题,您可能会遇到 这个问题。如果你看看那个问题的底部,你’ll see a link to 这个提交。您可以通过附加将提交并将请求页面拉入修补程序“.patch”到网址。 (例如: //github.com/magento/magento2/commit/11bcdcc83d6d5d3adc4151cfefd62b6f4cdcd680.patch) 在里面 应用补丁部分 below, we’LL涵盖如何将这样的补丁应用于magento。

玛托托支持

When Magento Commerce merchants run into core issues, they can submit issues to Magento Support, who will commonly reply with patches to solve those issues. When dealing with Magento Support, you should request patches that can be applied to Magento installed via Composer. In other words, patches with paths mapped to the 小贩/*** directories, rather than app/code/Magento.

自定义补丁

有时需要通过编辑核心代码来修复核心错误。虽然某些核心错误是通过编写插件/偏好/ etc而更适当修复的。要规避这个问题,有时写作补丁是一种更好的行动方案。编写核心补丁的好处是,如果底层代码在将来的释放中更改,则修补程序将无法应用,从而提醒您应删除/更改补丁。创建修补程序也可能需要更少的时间,具体取决于所修复的性质。

There are several ways patches can be created for files that are not tracked by Git, but here is one way to do it (the example is assuming you want to patch the 小贩/magento/module-catalog/Setup/UpgradeSchema.php file):

When naming patches, use a name that allows the patch to be easily linked back to the source issue, such as Git.hub-issue-6474.patch or MAGETWO-56699.patch. If there is no source issue to link to, you can use a short dash-delimited description of the issue.

准备补丁

使用补丁使用 作曲家补丁,有几个先决条件:

  1. 补丁文件中的路径必须相对于您的Composer包’re planning to patch. For example, if you need to patch the \Magento\CatalogInventory\Model\Stock class, the path in your patch needs to be Model/Stock.php, not 小贩/magento/module-catalog-inventory/Model/Stock.php.
  2. 你’LL需要确保修补程序文件仅在单个作曲家包中更改文件。如果修补程序适用于多个Composer软件包,您’LL需要将补丁文件拆分为多个补丁文件。

例如,让’s say you’跑进了链接的问题 GitHub部分 以上。这是你的方式’D准备补丁文件:

  1. 下载 //github.com/magento/magento2/commit/11bcdcc83d6d5d3adc4151cfefd62b6f4cdcd680.patch file
  2. 你’ll see that the patch applies to both app/code/Magento/CatalogInventory and app/code/Magento/Ui. Those directories won’t exist in your installation, but the corresponding paths will: 小贩/magento/module-catalog-inventory and 小贩/magento/ui. Since those are two separate composer packages, you’LL需要将该文件的内容拆分为两个单独的文件。
  3. 你’ll then need to find all instances of app/code/Magento/CatalogInventory and app/code/Magento/Ui and delete them since the patch file must be relative to the composer package.
  4. 以下是两个结果文件应该如下所示:
    Git.hub-9139_module-catalog-inventory.patch
    Git.hub-9139_module-ui.patch

应用补丁

按照以下步骤将修补程序应用于Magento网站:

  1. Create a 补丁/ directory in the root of your Magento installation.
  2. Move the patch(es) you want to apply to the 补丁/ directory.
  3. 在本地项目的根目录中运行此命令:
  4. Open the 作曲家.json file at the root of your Magento installation and edit the existing extra object to look like this, specifying the Composer package to apply the patch(es) to as well as a description of the patch(es) and a reference to the file location:

    The 作曲家-exit-on-patch-failure option is important to enable so that if a patch fails to apply, Composer will return a non-zero exit code. If you’re using 像Capistrano这样的自动部署工具,这有用,因为它会阻止部署成功。可能发生这种情况的常见场景是如果应用补丁以修复某些内容,然后在Magento的新版本中修复。当部署新版本的Magento时,修补程序将无法应用,因为更改将包含在新版本中。在那种情况下,需要删除失败的补丁。
  5. Run Composer安装 to apply the patch(es).
  6. Run 作曲家 update <PACKAGE NAME> (e.g. 作曲家 update magento/module-catalog-inventory) to update the composer lock file. The lock file tracks which patches have been applied to each composer package in an extra > patches_applied object.
  7. Add the 作曲家.json作曲家.lock, and the newly added 补丁/*** patch file to your version control system, commit, and then push the changes.

现在,每当您将Magento应用程序部署到开发,阶段或生产环境时,那些补丁都应该在随时应用“composer install” is run.

结论

既然你知道如何将修补程序应用于magento 2,享受泛滥的核心错误。如果您对本文中的任何内容有任何疑问,请随时打击我 在推特上.

发表评论

你r email address will not be published. 必需的地方已做标记 *

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.

最近的帖子查看全部
3月1日,2021年

Covid的巨大加速要求再次欺诈和消费者虐待警惕

2月3日,2021年

社交媒体在科迪德自然时期的增长’s One

1月5日,2021年

替代社交媒体

您是否注意到您的Facebook和Instagram内容似乎越来越少,并且每次通过都会越来越少?用于达到的帖子 […]