Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Github 如何在composer中使用fork_Github_Composer Php_Git Fork - Fatal编程技术网

Github 如何在composer中使用fork

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

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

 "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