詹姆斯·科威 / composer-patcher
使用composer应用补丁
dev-master
2015-05-15 11:24 UTC
Requires
- symfony/console: 2.6.*
- symfony/process: *
This package is not auto-updated.
Last update: 2024-09-23 08:04:24 UTC
README
使用Composer的script功能通过patch工具应用通用补丁。
补丁应用是幂等的,与patch工具一样,意味着如果patch决定不应用,则不会重新应用。
项目设置
a) 补丁需要在Composer的extra配置区域中声明(仅限根包)
"extra": { "magento-root-dir": "public", "patches": { "patch-group-1": { "patch-name-1": { "type": "patch", "title": "Allow composer autoloader to be applied to Mage.php", "url": "https://url/to/file1.patch" } }, "patch-group-2": { "patch-name-1": { "title": "Fixes Windows 8.1", "url": "https://url/to/file2.patch" } }, "shell-patch-group-1": { "magento-shell-patch-name-1": { "type": "shell", "title": "Magento security fix", "url": "https://url/to/magento/shell/patch.sh" } } } }
有两种类型的补丁
- 类型 "patch" - 通用补丁/差异文件,使用补丁工具应用;
- 类型 "shell" - 官方的Magento shell补丁,能够应用和/或回滚自身,且自包含。
如果没有声明类型,则默认为"patch"。如果您声明了此类补丁类型,您必须设置"magento-root-dir"额外配置,指向Mage根目录,否则将失败并显示错误。
"Shell"补丁将被复制到Mage根目录(由"magento-root-dir"额外配置设置),触发后将被删除。
补丁的组和名称将创建其ID,供内部使用(例如patch-group-1/patch-name-1),因此请确保您遵循以下2条规则
patch-group-1必须在patches对象字面量中是唯一的patch-name-1必须在它的补丁组中是唯一的
补丁组的示例:"magento","drupal","security"。补丁名称的示例:"CVS-1","composer-autoloader"。
b) 需要添加额外的脚本回调以在install或update时自动应用补丁(仅限根包)
"scripts": { "post-install-cmd": "Inviqa\\Command::patch", "post-update-cmd": "Inviqa\\Command::patch" }
您可以使用您想要的任何Composer 命令事件,甚至可以手动触发事件。
再次提醒,仅支持命令事件。请查看上述链接以了解哪些是它们。
c) 必须可用的patch工具