Nei*_*ime 150 github composer-php git-fork
这是我的composer.json,我想在Github上使用Nodge的lessphp项目分支
"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"
},
Run Code Online (Sandbox Code Playgroud)
但是当我进行更新时,我有这个错误:
nodge/lessphp dev-master - >找不到匹配的包.
我不知道如何正确地要求它这个叉...
有什么建议 ?
Sel*_*aek 190
最常见(也更简单)的方法是使用VCS存储库.
您所要做的就是将您的fork添加为存储库并更新版本约束以指向您的自定义分支.您的自定义分支名称必须以前缀为前缀
dev-.
假设您修补monolog以修复bugfix分支中的错误的示例:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/igorw/monolog"
}
],
"require": {
"monolog/monolog": "dev-bugfix"
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,除了指定bugfix分支外,不要更改require语句.您仍然引用上游包(monolog/monolog),而不是您的个人fork(igorw/monolog).您可以阅读文档中的详细信息
Nei*_*ime 41
使用VCS工作:
"name": "test/test",
"repositories": [{
"type": "vcs",
"url": "http://github.com/Nodge/lessphp"
}],
"require": {
"leafo/lessphp": "dev-master"
},
Run Code Online (Sandbox Code Playgroud)
但是,如果我需要一个具有此功能的模块composer.json,它就不起作用.它安装原始项目,而不是fork.
"name": "example/example",
"require": {
"test/test": "dev-master"
},
Run Code Online (Sandbox Code Playgroud)
我应该再次提到存储库.这是正常的吗?
Boe*_*edy 27
如果你无法得到@Neilime的答案,请确保你的fork使用不同的分支.
例如,将您的更改推送到您的分支上的分支my-bugfix,不要dev-在分支名称中添加前缀,但是在您的composer.json中,您必须添加它.你的作曲家文件看起来像:
"repositories":
[
{
"type": "vcs",
"url": "http://github.com/yourname/packageName"
}
],
"require": {
"owner/packageName": "dev-my-bugfix"
},
Run Code Online (Sandbox Code Playgroud)
Lui*_* B. 15
我尝试了很多选择,但在我收到这篇文章后,我看到了曙光,而且效果很好。
这是你必须做的:
1-分叉存储库
2- 创建一个分支并进行所需的修改。
3- 将存储库标签添加到您的 composer.json
"repositories": [
{
"type": "vcs",
"url": "https://github.com/user/yourforkname"
}
]
Run Code Online (Sandbox Code Playgroud)
4- 在您的项目中的命令行中,像这样要求您的 fork:
composer require vendor/packagename:dev-branchname
Run Code Online (Sandbox Code Playgroud)
瞧!
你有你的 fork 版本工作
根据Composer文档
http://getcomposer.org/doc/05-repositories.md#vcs,它足以指定(require在你的情况下为"nodge/lessphp" )中的原始存储库(而不是fork ).然后Composer将安装你的fork(查看供应商中的代码)
小智 5
所以,这是 2019 年,这里的大多数答案已经正确。
但是,如果您发现自己需要需要fork的特定分支(您创建的),请首先让 Composer 列出可用的版本/标签。这为我节省了很多时间。
带有spatie/laravel-backup包的完整示例。
首先,将repositories密钥添加到 composer.json。用你的叉子的网址
"repositories": [{
"type": "vcs",
"url": "https://github.com/holymp2006/laravel-backup"
}]
Run Code Online (Sandbox Code Playgroud)
获取可用版本/标签
composer show "spatie/laravel-backup" --all
Run Code Online (Sandbox Code Playgroud)
versions在终端输出中选择您想要的版本,然后要求该版本
composer require spatie/laravel-backup:v5.x-dev
Run Code Online (Sandbox Code Playgroud)