Github 如何在composer中使用fork
这是我的composer.json,我想在Github上使用Nodge的fork of lesshpp项目Github 如何在composer中使用fork,github,composer-php,git-fork,Github,Composer Php,Git Fork,这是我的composer.json,我想在Github上使用Nodge的fork of lesshpp项目 "repositories": [{ "type": "package", "package": { "version": "dev-master", "name": "nodge/lessphp", "source": { "url": "https://github.com/Nodge/lessp
"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/lesshp dev master->未找到匹配的包
我不知道如何正确地要求这个叉子
有什么建议吗?最常见(也更简单)的方法是使用VCS存储库
您只需将fork添加为存储库并更新
指向自定义分支的版本约束。你的海关部门
名称必须以dev-
作为前缀
示例假设您修补了monolog以修复bugfix分支中的错误:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/igorw/monolog"
}
],
"require": {
"monolog/monolog": "dev-bugfix"
}
}
请注意,除了指定错误修复分支之外,您不会更改require语句。您仍然引用上游包(monolog/monolog
),而不是您的个人fork(igorw/monolog
)。您可以使用VCS works阅读详细信息:
"name": "test/test",
"repositories": [{
"type": "vcs",
"url": "http://github.com/Nodge/lessphp"
}],
"require": {
"leafo/lessphp": "dev-master"
},
但是,如果我需要一个具有此composer.json
的模块,它就不能工作。它安装原始项目,而不是fork
例子
我应该再次提到存储库。这正常吗?根据作曲家的文档 ,这就足够了
在
require
中指定原始存储库(而不是fork)(在您的示例中为nodge/lesshp)。Composer随后将安装您的fork(查看供应商中的代码)如果您无法让@Neilime answer为您工作,请确保您的fork使用不同的分支
例如,将更改推送到分支上名为my bugfix
的分支,不要在分支名称中添加dev-
前缀,但必须在composer.json中添加前缀。您的composer文件如下所示:
"repositories":
[
{
"type": "vcs",
"url": "http://github.com/yourname/packageName"
}
],
"require": {
"owner/packageName": "dev-my-bugfix"
},
我通常在包定义中添加一个“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": "*"
}
}
我尝试了很多选择,但在我得到这篇文章后,我看到了光明,它只是完美地工作 这就是你必须做的: 1-分叉存储库 2-创建分支并进行所需的修改 3-将存储库标签添加到composer.json
"repositories": [
{
"type": "vcs",
"url": "https://github.com/user/yourforkname"
}
]
4-在项目内部的命令行中,要求您的fork如下所示:
composer require vendor/packagename:dev-branchname
瞧
您的fork版本正在运行因此,现在是2019年,这里的大多数答案都是正确的 但是,如果您发现自己需要fork(您创建的fork)的特定分支,请让composer首先列出可用的版本/标记。 这节省了我很多时间
spatie/laravel备份
软件包的完整示例
首先,将存储库
键添加到composer.json。用你的叉子的url
"repositories": [{
"type": "vcs",
"url": "https://github.com/holymp2006/laravel-backup"
}]
获取可用的版本/标签
composer show "spatie/laravel-backup" --all
从终端输出的versions
中选择所需的版本,然后需要该版本
composer require spatie/laravel-backup:v5.x-dev
当我有一个应用程序时,接受的答案和澄清的答案对我来说都很好,它需要一个我已经分叉和修改过的依赖项。在这种情况下,我仍然会使用公认的答案 然而,当我有一个包时,我想在Packagist上发布自己,它也包含一个分叉和修改的依赖项,这种方法不再有效 如果有人尝试使用此配置进行安装,他们仍然会得到相同的
->未找到匹配的软件包。
错误消息
并且建议repo设置必须在顶层composer.json
。这意味着,安装此软件包的人也必须将该配置添加到他们的composer.json
文件中,这给安装过程增加了很多不必要的混乱
相反,我将我的fork发布给Packagist。我的理解是,虽然不支持fork,但这将被视为一个维护fork,因为我将它用于这个新包
希望这对任何对想要分发的包或库有问题的人都有帮助。这似乎不起作用,我一直在尝试:“存储库”:[{“类型”:“vcs”,“url”:git@github.com:Polycademy/purl.git“}”,和“require”:{“jwade/purl”:“dev master”,},但我不断遇到:问题1-在任何版本中都找不到请求的程序包jwade/purl,程序包名称中可能有输入错误。@cmcdragokai尝试运行
composer show jwade/purl-v
它应该告诉您,如果它忽略了开发主版本,为什么它会忽略它。@seldaek您救了我!非常感谢。(我的fork名为dev-dev-…)不知道名称是自动命名的。“阅读文档”是一个错误的答案,更好的答案是给出一个具体的例子,提醒不要引用个人fork。这节省了我的时间,+1此处相同的问题使用“rm-rf”然后“composer update”手动删除模块。这对我很有用。我用过十几把叉子,但这从来没有用过。这里有一个有效的解决方案:@Julien,我刚刚使用了这个方法,它就像一个符咒一样有效。。。问题很清楚,当需要有问题的包时,您必须只记得在自定义分支名称中添加dev-prefix。。。但我想说的是,我需要使用https://作为URL。这对我来说是一个巧妙而清晰的解释!非常感谢。但是如果是别人的叉子呢?另请参见示例,分叉存储库的composer.json
文件中的name
字段应与原始所有者保持相同。
composer require spatie/laravel-backup:v5.x-dev