通过 Composer 处理分叉的 GitHub 存储库

Ric*_*ard 5 composer-php packagist

我希望我的问题不是太模糊,但通过搜索无法得到正确的答案。

我有以下情况;我们正在开发一个项目,并通过 Composer 安装了某些依赖项。这些依赖项之一已经过时,需要进行一些修复和添加。我已在 GitHub 上分叉了此存储库并将其添加到 Packagist。

要处理代码,我需要它在我的项目中运行并从那里进行编辑以查看我的更改是否有效,但它位于vendor通过 Composer 安装的文件夹中。

通过 GitHub 直接在供应商文件夹中克隆此项目将不起作用,因为不会为其编写自动加载器。

到目前为止,我所做的是在该vendor文件夹中工作,然后将我的工作从那里复制并粘贴到 GitHub 文件夹并从那里推送,但逻辑上相当棘手。

如何处理嵌入到项目中的作曲家库,以便您可以从此文件夹提交更改?

rob*_*006 6

  1. 更改包约束composer.json以使用分支而不是标记版本 - 您可以使用dev-masterformaster分支或dev-my-branchformy-branch分支。您还可以配置分支别名

    "require": {
        "some-vendor/some-package": "dev-master",
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加一个指向您的分叉的存储库:

    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/richard/some-package/"
        },
    ]
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行composer update以从您的分支安装新版本(或者composer require "some-vendor/some-package:dev-master"如果您不想更新任何其他依赖项)。

现在您应该已经从您的 fork 中克隆了源代码vendor/some-vendor/some-package。您可以编辑这些文件并测试更改是否适合您的应用程序。完成工作后:

  1. 在您的 fork 中提交更改并将其推送到 GitHub。
  2. 返回应用程序的根目录并运行composer updatecomposer require "some-vendor/some-package:dev-master"。这将更新您的composer.lock文件以使用最新版本的分支。然后提交锁中的更改并推送。

现在,如果有人克隆您的项目(或只是拉取更改),它将获得新的composer.lock指向您的带有指定提交哈希的分叉 -composer install应该始终直接从 GitHub 安装相同版本的分叉。