当前位置: 首页 > 知识库问答 >
问题:

在作曲家依赖项中使用包分叉

长孙鸿
2023-03-14

我正在开发一个laravel包(我们称之为包a),它需要另一个包(包B)https://github.com/dropbox/dropbox-sdk-php).

我做了一个B包的叉子(https://github.com/EmilioBravo/dropbox-sdk-php),在新的分支“fix64”中进行了一些更改,并在composer中添加my GitHub repo作为存储库。composer文档中指出的包A的json:

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/EmilioBravo/dropbox-sdk-php"
    }
],
"require": {
    "php": ">=5.4.0",
    "illuminate/support": "4.2.*",
    "dropbox/dropbox-sdk": "dev-fix64"
},

如果我从包A中调用composer update,它会正确下载我的fork,但是,如果我在另一个项目(项目C)中使用包A作为依赖项并从中调用composer update,composer说它找不到dev-fix64。

问题1

- emilio-bravo/platform dev-dropboxfix requires dropbox/dropbox-sdk dev-fix64 -> no matching package found.

>

emilio-bravo/平台dev-dropboxfix的安装请求-

只有当我在项目C中添加我的回购作为存储库composer.json它才能找到我的分叉分支。

我发现的另一种解决方法是将我的fork克隆到satis存储库中。

但这感觉不对。如何让composer从GitHub找到我的叉子?

共有1个答案

皇甫卓君
2023-03-14

将自定义存储库添加到主项目是使Composer了解新源的唯一方法。

它是故意这样做的,因为否则回购可能会增加回购可能会增加回购...没有保证有一个有限的回购清单。

此外,添加一个回购不会对在那里找到哪个软件做出任何声明,作曲家将扫描每个标签和分支。理论上,存储库可以为一个完全不同的、众所周知的包拥有另一个分支,提供它的新版本,并添加一些恶意行为。

一般来说,对于防止远程代码执行,Composer似乎非常适合,除了不知情的人做出错误的决策。

因此,如果您在PackageGist上发布的包中发现错误。对于每个人来说,最好的方法就是提出一个请求。第二个最好的方法是用新名称将项目分叉,并将其发布在PackageGist上。组织也是如此。使用具有相同项目名称的分叉回购协议并将Composer指向它来修补问题是最糟糕的解决方案,通常仅适用于您自己项目的依赖项。

 类似资料:
  • 我想在laravel 5.8安装zizaco/委托包,在他们的github页面,据说包括"zizaco/委托":"5.2. x-dev"在composer.json文件和运行作曲家更新命令。我这样做如下,并运行作曲家更新命令。 但在安装zizaco/trust包时,composer update命令会将所有包更新为最新版本(这些包我包含在上面的“require”字段中)。所以,如果在最新更新的软件

  • 遇到作曲家的问题。我有一个主要的项目,我正在和一些我建立的小库一起工作,我想更容易地在我的项目之间共享。它们还没有准备好发布,所以我不想把它们添加到打包器中,但是当我需要1而需要另一个时,它会出错,除非我在我的主程序上也发布了那个自定义存储库composer.json 另外,第三级需求不能解决打包库 Main Project composer.json: 配置库:当在SimpleTable中运行作

  • 我正在尝试将laravel项目从5.5升级到5.6。我遵循了文档中的说明 我在运行composer update时遇到此错误:此错误似乎与phpunit/phpunit有关,我将其升级到~7.0 onsort git:(硕士)✗ composer update加载具有包信息的composer存储库更新依赖项(包括require dev)无法将您的需求解析为可安装的包集。 问题1-结论:不要安装ph

  • 我正在使用Symfony 2.3.4 在我的控制台上,我创建了sylius/sylius项目,在安装sensio/distribution捆绑包之前,我更喜欢dist 作曲家抛出此错误消息 我试过: > 编辑sylius/composer.json,并将seno/分布-包:2.3.修改为seno/分布-包:2.2.-dev 在C:\wamp\www\sylius中打开一个shell。将app/co