我正在尝试让composer使用我自己的库分支。
原始:https://github.com/KnpLabs/php-github-api我的叉子:https://github.com/TransitScreen/php-github-api
我能够安装原始的与composer简单地添加到composer.json:
{
"require": {
"knplabs/github-api": "~1.4"
}
}
我按照文档中的说明,将其修改为:
{
"repositories": [
{
"type": "git",
"url": "https://github.com/TransitScreen/php-github-api.git"
}
],
"require": {
"knplabs/github-api": "dev-master"
},
"minimum-stabilitiy": "dev"
}
在我的分叉存储库中,我创建了master
和dev-master
分支。我不清楚哪一个是正确的,所以我两个都做了。我还尝试过使用"type" : "vcs"
并从URL中删除.git
。两个都不行。我运行composer update
,然后composer.lock
文件仍然指向原始的repo URL,而不是我的。所以当我运行composer install
时,我从来没有得到我的更改。
我做错了什么?
PS:我注意到我试图分叉的库在它的作曲家中有这个。json文件:
"extra": {
"branch-alias": {
"dev-master": "1.4.x-dev"
}
}
我没有找到任何文档来解释别名可能产生的影响。例如,我的分叉库应该有一个1.4.x
分支吗??
更新1 顺便说一句,我知道我的一些配置必须是正确的,因为我在删除缓存后运行composer update
时,有一刻我看到它正在读取编写器。我的(正确的)存储库的Json。然后是作曲家。锁仍然指向原来的(不正确)。
更新2 我也试过使用composer update --prefer-source
,但它仍然不起作用。
我找到问题了!
我已经在我的分叉库中编辑了composer.json
文件…它看起来是这样的:
{
"name": "knplabs/github-api",
"type": "library",
"description": "GitHub API v3 client",
"homepage": "https://github.com/TransitScreen/php-github-api",
"keywords": ["github", "gh", "api", "gist"],
"license": "MIT",
但是我把它改成了:
{
"name": "transitscreen/php-github-api",
"type": "library",
"description": "GitHub API v3 client",
"homepage": "https://github.com/TransitScreen/php-github-api",
"keywords": ["github", "gh", "api", "gist"],
"license": "MIT",
我认为名称需要与新的存储库匹配,但是我错了。当我把它改回原来的名字时,一切正常!
非常感谢@Tomas提供的有用的故障排除提示。
我在任何地方都没有看到任何关于这个的文档,所以我更新了一个composer文档:https://github.com/composer/composer/pull/4329
首先,尝试将您的分支重命名为其他名称(最好是唯一的,并且在原始文件中不可用)并使用它。
具体如下:https://github.com/TransitScreen/gh-api/tree/dev-master
dev-master
=> my-feature
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/TransitScreen/php-github-api"
}
],
"require": {
"knplabs/github-api": "newsearch"
},
"minimum-stability": "dev"
}