找不到要修补的文件,但文件存在

问题描述 投票:0回答:2

我正在使用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();
php composer-php patch
2个回答
0
投票

补丁中的这一行需要添加前缀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

-1
投票

查看带有补丁说明的部分 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"
        }
    }
},
© www.soinside.com 2019 - 2024. All rights reserved.