composer-php - 通过 Composer 处理分叉的 GitHub 存储库
问题描述
我希望我的问题不是太模糊,但无法通过搜索得到正确的答案。
我有以下情况;我们正在开发一个项目,并通过 Composer 安装了某些依赖项。其中一个依赖项已经过时,需要一些修复和添加。我已经在 GitHub 上分叉了这个 repo,并将它添加到了 Packagist。
要处理代码,我需要它在我的项目中运行并从那里编辑以查看我的更改是否有效,但它位于vendor
文件夹中,通过 composer 安装它。
通过 GitHub 直接在 vendor 文件夹中克隆这个项目是行不通的,因为不会为它编写自动加载器。
到目前为止,我所做的是在vendor
文件夹中工作,然后将我的工作从那里复制并粘贴到 GitHub 文件夹并从那里推送,但在逻辑上相当棘手。
如何处理嵌入在项目中的作曲家库,以便您可以从该文件夹提交更改?
解决方案
更改包约束
composer.json
以使用分支而不是标记版本 - 您可以dev-master
用于master
分支或分支dev-my-branch
。my-branch
您还可以配置分支别名。"require": { "some-vendor/some-package": "dev-master", }
添加指向您的 fork的存储库:
"repositories": [ { "type": "git", "url": "https://github.com/richard/some-package/" }, ]
运行
composer update
以从您的 fork 安装新版本(或者composer require "some-vendor/some-package:dev-master"
如果您不想更新任何其他依赖项)。
现在你应该从你的 fork 中克隆了源代码vendor/some-vendor/some-package
。您可以编辑这些文件并测试更改是否适合您的应用。完成工作后:
- 在你的 fork 中提交更改并将它们推送到 GitHub。
- 返回应用程序的根目录并运行
composer update
orcomposer require "some-vendor/some-package:dev-master"
。这将更新您的composer.lock
文件以使用最新版本的 fork。然后在你的锁中提交更改并推送。
现在,如果有人将克隆您的项目(或只是提取更改),它将获得新composer.lock
的指向具有指定提交哈希的 fork -composer install
应始终直接从 GitHub 安装相同版本的 fork。