我正在使用cweagans/composer-patches通过composer来修补文件。 我试图将补丁应用于 2 个文件,但出现以下错误:
error: vendor/composer/composer/src/Composer/Repository/CompositeRepository.php : No such file or directory
这是我正在尝试修补的文件。问题是,如果我运行 nano vendor/composer/composer/src/Composer/Repository/CompositeRepository.php
我可以毫无问题地打开文件,所以文件存在。我不知道如何让它工作,或者为什么它无法打开它说不存在的文件。
这是补丁文件:
--- vendor/composer/composer/src/Composer/Repository/ArrayRepository.php 2021-04-27 04:11:08.000000000 -0700
+++ vendor/composer/composer/src/Composer/Repository/ArrayRepository.php 2022-11-10 10:51:04.206095616 -0800
@@ -274,7 +274,7 @@
*
* @return int Number of packages
*/
- public function count()
+ public function count(): int
{
if (null === $this->packages) {
$this->initialize();
补丁中的这一行需要添加前缀a/和b/:
--- a/vendor/composer/composer/src/Composer/Repository/...
+++ b/vendor/composer/composer/src/Composer/Repository/...
然后,需要使用“-p 1”选项执行补丁命令:
patch -tu -p 1 < vendor_composer.patch
查看带有补丁说明的部分 Composer 代码会很有用。也许而不是
--- vendor/composer/composer/src/Composer/Repository/...
+++ vendor/composer/composer/src/Composer/Repository/...
应该是
--- a/src/Composer/Repository/...
+++ b/src/Composer/Repository/...
以及composer.json内部
"extra": {
"patches": {
"composer/composer": {
"Description info": "path/to/patch/file.patch"
}
}
},