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

Composer php 通过Composer处理分叉GitHub存储库,composer-php,packagist,Composer Php,Packagist,我希望我的问题不是太含糊,但通过搜索无法得到正确的答案 我有以下情况,;我们正在处理一个项目,并通过Composer安装了某些依赖项。其中一个依赖项已经过时,需要进行一些修复和添加。我已经在GitHub上完成了这一回购协议,并将其添加到Packagist中 要处理代码,我需要它在我的项目中运行并从那里编辑,以查看我的更改是否有效,但它位于供应商文件夹中,通过composer安装 通过GitHub直接在供应商文件夹中克隆此项目将不起作用,因为不会为其编写自动加载程序 到目前为止,我所做的是在供应商

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

我有以下情况,;我们正在处理一个项目,并通过Composer安装了某些依赖项。其中一个依赖项已经过时,需要进行一些修复和添加。我已经在GitHub上完成了这一回购协议,并将其添加到Packagist中

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

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

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

如何在嵌入到项目中的composer库上工作,从而可以从该文件夹提交更改

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

  • 添加一个指向您的分叉的点:

    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/richard/some-package/"
        },
    ]
    
  • 运行
    composer update
    从您的fork安装新版本(或者
    composer需要“某个供应商/某个软件包:dev master”
    如果您不想更新任何其他依赖项)

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

  • 提交fork中的更改并将其推送到GitHub
  • 返回应用程序的根目录并运行
    composer update
    composer require“某个供应商/某个软件包:dev master”
    。这将更新您的
    composer.lock
    文件以使用最新版本的fork。然后提交锁中的更改并按下

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

    我认为您没有回答主要问题;如何在我的项目中获得repo(并将其保存在composer.json中),以便我可以积极地处理它,并且我的更改也可以提交到GitHub。目前,我正在将文件内容从
    vendor
    文件夹复制粘贴到单独签出的GitHub项目。我知道如何通过
    composer.json中的
    repositories
    获取我的fork版本。这应该可以将您的fork直接克隆到
    vendor
    目录,这样您就可以从那里编辑它了。从短期来看,这是可行的,但是我需要将包放在
    composer.json
    中,这样我也可以在登台服务器上进行测试(并确保在发布到生产环境之前不会忘记添加它)。对于composer和多个环境,此解决方案实际上不可行。。“没有更好的办法吗?”理查德,恐怕我不明白问题出在哪里。这种方法将您的fork包添加到
    composer.json
    中,并将使用过的版本保存在
    composer.lock
    中,因此在每个环境中,您都将获得相同版本的fork包。我在多个环境中以这种方式工作,没有任何问题。请更清楚地表达您的担忧;是的,我可以通过composer克隆我的repo,但它只是repo的“签出”版本。然而,回购协议尚未敲定;我仍然在工作,需要能够直接编辑代码,并测试它是否在我的项目中工作。当通过composer检出时;GitHub应用程序不会跟踪我在那里所做的更改,因为它不是GitHub“文件夹”,而是composer文件夹。它是一个“WIP”文件夹,但也需要在Composer中。
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/richard/some-package/"
        },
    ]