如何与composer php要求一个分叉

这里是我的composer.json,我想在Github上使用lessphp项目的Nodge的fork

"repositories": [{ "type": "package", "package": { "version": "dev-master", "name": "nodge/lessphp", "source": { "url": "https://github.com/Nodge/lessphp.git", "type": "git", "reference": "master" }, "autoload": { "classmap": ["lessc.inc.php"] } } }], "require": { "php": ">=5.3.3", "nodge/lessphp": "dev-master" }, 

但是,当我更新时,我有这个错误:

nodge / lessphp dev-master – >没有find匹配的软件包。

我不知道如何正确要求这个叉子…

有什么build议么 ?

最常见(也是最简单)的方法是使用VCS存储库。

所有你需要做的就是添加你的叉作为一个存储库,并更新版本约束指向您的自定义分支。 您的自定义分支名称必须dev-为前缀。

假设您修补了monolog以修复bugfix分支中的错误:

 { "repositories": [ { "type": "vcs", "url": "https://github.com/igorw/monolog" } ], "require": { "monolog/monolog": "dev-bugfix" } } 

请注意,除了指定bugfix分支以外,不要更改require语句。 你仍然引用上游包( monolog/monolog ), 而不是你的个人分叉( igorw/monolog )。 您可以阅读文档中的详细信息

使用VCS工作:

 "name": "test/test", "repositories": [{ "type": "vcs", "url": "http://github.com/Nodge/lessphp" }], "require": { "leafo/lessphp": "dev-master" }, 

但是,如果我需要一个有这个composer.json的模块,它不起作用。 它安装了原始的项目,而不是叉子。

 "name": "example/example", "require": { "test/test": "dev-master" }, 

我应该再次提到存储库。 这是正常的吗?

如果你不能得到@Neilime答案为你工作,确保你的叉子使用不同的分支。

例如,将您的更改推送到叉子上的一个名为my-bugfix的分支上。 您的composer php文件将如下所示:

 "repositories": [ { "type": "vcs", "url": "http://github.com/yourname/packageName" } ], "require": { "owner/packageName": "dev-my-bugfix" }, 

根据Composer文档http://getcomposer.org/doc/05-repositories.md#vcs ,在require (“nodge / lessphp”)中指定原始存储库(不是fork)就足够了。 然后composer php将安装您的叉子(查看供应商的代码)

我通常在软件包定义中添加一个“dist”节点。 我从来没有这样使用它的问题。

但是,我不记得我从哪里得到这个诀窍,但是对于任何进一步的解释。

 { "repositories": [ { "type": "package", "package": { "version": "dev-master", "name": "nodge/lessphp", "source": { "url": "https://github.com/Nodge/lessphp.git", "type": "git", "reference": "master" }, "autoload": { "classmap": ["lessc.inc.php"] }, "dist": { "url": "https://github.com/Nodge/lessphp/archive/master.zip", "type": "zip" } } } ], "require": { "nodge/lessphp": "*" } } 

好的,所以我做了什么文件说,它的工作原理…所以我如何推回到github的任何改变回我的叉子看到composer php没有创build一个包文件夹中的git回购。 我是否开始通过实际初始化repo并再次将其指向fork,或者composer有一些参数,我需要通过它来在vendor / package文件夹中创buildfork的repo?

我的目标是推动我做的任何变化,然后做一个PR,但没有在包文件夹中的git回购。

Interesting Posts