Composer php 如何格式化diff/patch文件以将其应用于cweagans/composer补丁

Composer php 如何格式化diff/patch文件以将其应用于cweagans/composer补丁,composer-php,diff,patch,Composer Php,Diff,Patch,我想利用cweagans/composer补丁将补丁应用于第三方软件包 所以我修复了一个bug,并使用diff导出了补丁 cd路径/to/package diff-u fileA fileB>/path/to/project/patch.diff 并添加到composer.json中: { "patches": { "vendor/packagekey": { "Bug description&q

我想利用cweagans/composer补丁将补丁应用于第三方软件包

所以我修复了一个bug,并使用diff导出了补丁

cd路径/to/package
diff-u fileA fileB>/path/to/project/patch.diff
并添加到composer.json中:

{
    "patches": {
        "vendor/packagekey": {
            "Bug description": "patch.diff"
        }
    }
}
当执行composer安装时,我得到

无法应用修补程序!跳过错误是:无法应用修补程序

我必须从源代码安装软件包并使用git diff格式化补丁吗

如果我需要从源代码处安装该软件包,我如何告诉composer仅从源代码处安装该软件包?我不想从源代码安装所有软件包

更新: 这就是补丁文件的样子

--- Resources/Private/Templates/ImageManipulation/ImageManipulationElement.html 2020-08-12 13:37:40.759056419 +0200
+++ Resources/Private/Templates/ImageManipulation/ImageManipulationElement.html2    2020-08-12 13:37:28.694963559 +0200
@@ -19,7 +19,7 @@
                                    data-severity="notice"
                                    data-modal-title="{f:render(partial: 'ModalTitle', section:'Main', arguments: _all)}"
                                    data-image-uid="{image.uid}"
-                                   data-crop-variants="{config.cropVariants -> f:format.json()}'"
+                                   data-crop-variants='{config.cropVariants -> f:format.json()}'
                                    data-button-preview-text="{f:translate(key:'LLL:EXT:core/Resources/Private/Language/locallang_wizards.xlf:imwizard.preview')}"
                                    data-button-dismiss-text="{f:translate(key:'LLL:EXT:core/Resources/Private/Language/locallang_wizards.xlf:imwizard.cancel')}"
                                    data-button-save-text="{f:translate(key:'LLL:EXT:core/Resources/Private/Language/locallang_wizards.xlf:imwizard.accept')}"

通过从源代码安装包并调用
git diff>/path/to/project/patch.diff
,它可以正常工作

但最初的问题仍然有效——我可以使用带有composer补丁的常规diff文件吗

从以下源安装程序包:

composer require--首选源供应商/包

如果您已经安装了dist软件包,只需使用--preference源参数再次运行命令。

是否检查了修补程序?也许你构建它的方式不对(显示你的版本和原始代码之间的差异,这样你的更改被表示为“删除的行”,原始部分被表示为“添加的代码”)@NicoHaase我添加了补丁文件。你说的“我不想从源代码安装所有软件包”是什么意思?大多数PHP软件包都是通过它们的源代码安装的,只有一些提供了PHAR,但在使用Composer安装时不使用AFAIK。不,如果可能的话,是关于不加载vcs文件的。我这样做了,结果是我破坏了我自己的堆栈:如果你报告这样的错误(如果它是有效的错误)您需要一个补丁,因为在oss中,可能需要一段时间才能发布补丁级别的版本;)此问题仍然有效,但请编辑主要问题以包含所有信息。不要使用答案部分来澄清您的问题问题问题是如何使用diff格式化补丁,这是使用git diff的一种方式,这是一种答案,但不是公认的答案。那么,如果有人因为同样的经历而偶然发现了这个问题,那么将此作为可能的解决方案又有什么意义呢?