vaimo/composer-patches

将本地或远程文件中的补丁应用于任何属于给定composer项目的包。补丁可以在项目和包级别上定义。可选支持补丁版本控制、排序、自定义补丁应用配置和测试/故障排除的补丁命令

安装: 3,031,290

依赖关系: 17

建议者: 0

安全: 0

星级: 287

关注者: 11

分支: 40

开放问题: 35

类型:composer-plugin


README

Latest Stable Version Build Status Total Downloads Daily Downloads Minimum PHP Version Scrutinizer Code Quality Code Climate

将本地或远程文件中的补丁应用于属于给定composer项目的任何包。补丁可以在包配置或单独的JSON文件中的项目和包级别上定义。还提供无声明模式(使用补丁文件内的嵌入式信息)。

插件应用补丁的方式(命令、预检查)完全可配置(包括执行以应用补丁的实际命令),从项目的composer.json中进行配置。

请注意,插件保留在非常旧的PHP版本上,因为遗留软件通常是补丁需求最常见的上下文。

完整文档

  • 基本使用 - 通过配置文件或嵌入式元数据定义补丁
  • 高级使用 - 定义补丁时的高级使用选项
  • 配置 - 补丁应用器的配置选项
  • 命令 - 插件附带CLI命令的详细信息
  • 环境变量 - 用于更改插件行为的环境变量
  • 错误处理 - 处理遇到的错误
  • 开发 - 插件开发工作流程的详细信息
  • 示例 - 插件使用示例
  • 变更 - 每个插件版本更改/修复的列表

快速入门

可以使用两种方式对composer包应用补丁

  • 嵌入式元数据(推荐默认方法)
  • JSON声明和嵌入式(推荐用于远程补丁)

使用:嵌入式元数据

{
  "require": {
    "some/package-name": "1.2.3"
  },
  "extra": {
    "patcher": {
      "search": "patches"
    }
  }
}

patches/changes.patch的内容

This patch changes... 
absolutely everything

@package some/package-name

--- Models/Example.php.org
+++ Models/Example.php
@@ -31,7 +31,7 @@
      */
     protected function someFunction($someArg)
     {
-        $var1 = 123;
+        $var1 = 456; // patched by composer-patches
         /**
          * rest of the logic of the function
          */

作为良好实践,您可能想添加一个提示,说明该文件已被修补。

完整标签选项列表(涵盖插件的所有功能)可以在这里找到。

请注意,标签覆盖了模块的大部分功能,因此对于补丁的json声明中给出的每个解释都适用于标签。

使用:JSON声明

{
  "require": {
    "some/package-name": "1.2.3"
  },
  "extra": {
    "patches": {
      "some/package-name": {
        "This patch changes ... absolutely everything": "patches/changes.patch",
        "remote patch": "http://www.example.com/remote-patch.patch",
        "remote patch with checksum check": {
          "source": "http://www.example.com/other-patch.patch",
          "sha1": "5a52eeee822c068ea19f0f56c7518d8a05aef16e"
        }
      }
    }
  }
}

patches/changes.patch的内容

--- Models/Example.php.org
+++ Models/Example.php
@@ -31,7 +31,7 @@
      */
     protected function someFunction($someArg)
     {
-        $var1 = 123;
+        $var1 = 456;
         /**
          * rest of the logic of the function
          */

应用器配置

可以通过更改修补程序的配置或引入额外的修补程序应用程序来操作应用补丁的方式。

在大多数情况下,由于模块默认配置合理,因此不需要重新配置模块。默认支持的appliers:补丁、git。

关于此主题的更多信息可以在这里找到。

升级

在升级模块时,可能会遇到一些奇怪的崩溃,例如找不到类或类构造函数参数错误。

这通常意味着在升级后,某些类的类结构或构造函数签名发生了变化,这意味着插件可能正在运行一些旧版本和新版本中的类。

由于修补程序在项目安装过程中的后期(在自动加载生成之前)启动,建议开发者重新执行composer install

理想情况下,插件应始终使用带有显式--no-plugins标志的composer update调用来更新,以避免使用可能来自两个不同插件版本混合逻辑的问题。