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

时间:2018-04-24 14:22:58

标签: composer-php packagist

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

我有以下情况;我们正在开发一个项目,并通过Composer安装了某些依赖项。其中一个依赖项已经过时,需要一些修复和补充。我已经在GitHub上分发了这个回购并将其添加到Packagist。

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

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

到目前为止,我所做的是在vendor文件夹中工作,然后将我的工作从那里复制并粘贴到GitHub文件夹并从那里推送,但在后勤方面非常棘手。

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

1 个答案:

答案 0 :(得分:2)

  1. 更改composer.json中的包约束以使用分支而不是标记版本 - 您可以dev-master用于master分支,dev-my-branch用于my-branch科。您还可以配置分支alias

    "require": {
        "some-vendor/some-package": "dev-master",
    }
    
  2. 添加指向您的前叉的repository

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

  4. 现在你应该在vendor/some-vendor/some-package的叉子中克隆来源。您可以编辑这些文件并测试更改是否适合您的应用。完成工作后:

    1. 提交fork中的更改并将其推送到GitHub。
    2. 返回应用的根目录并运行composer updatecomposer require "some-vendor/some-package:dev-master"。这将更新您的composer.lock文件以使用最新版本的fork。然后提交锁定中的更改并推送。
    3. 现在,如果有人将克隆您的项目(或只是提取更改),它将使用指定的提交哈希指向您的fork的新composer.lock - composer install应该始终直接从您的fork安装相同版本的GitHub的。