使用 PHP composer 克隆 git repo

新手上路,请多包涵

我正在尝试使用 composer 从github自动克隆一个不在 packagist 中的git存储库,但它不起作用,我不知道我做错了什么。

我认为我必须将它包含在“存储库”中,如下所示:

 "repositories": [
    {
        "url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
        "type": "git"
    }
],

然后可能在“要求”部分列出它。它应该类似于 此示例,但它不起作用。它只是给出了这个错误:

您的要求无法解决为一组可安装的软件包。

有没有人尝试过做这样的事情?

原文由 martin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 362
2 个回答

在 2013 年撰写本文时,这是一种方法。 Composer 增加了对更好方法的支持:参见@igorw 的 回答

你有存储库吗?

Composer 支持 Git、Mercurial 和 SVN。

您对存储库有写入权限吗?

是的?

存储库是否有 composer.json 文件

如果您有存储库,您可以写入:添加 composer.json 文件,或修复现有文件,不要使用以下解决方案。

转到@igorw 的 答案

仅当您没有存储库时才使用它

或者如果存储库没有 composer.json 并且您无法添加它

这将覆盖 Composer 可能能够从原始存储库的 composer.json 读取的所有内容,包括包的依赖项和自动加载。

使用 package 类型会将正确定义所有内容的负担转移到您身上。更简单的方法是在存储库中有一个 composer.json 文件,然后使用它。

此解决方案实际上仅适用于您无法更改的废弃 ZIP 下载或您只能阅读但不再维护的存储库的极少数情况。

 "repositories": [
    {
        "type":"package",
        "package": {
          "name": "l3pp4rd/doctrine-extensions",
          "version":"master",
          "source": {
              "url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
              "type": "git",
              "reference":"master"
            }
        }
    }
],
"require": {
    "l3pp4rd/doctrine-extensions": "master"
}

原文由 Mike Graf 发布,翻译遵循 CC BY-SA 4.0 许可协议

我尝试加入这里提到的解决方案,因为它需要列出一些重要的点。

  1. 正如@igorw的回答中提到的那样,存储库的URL必须在composer.json文件中指定,但是因为在这两种情况下composer.json都必须存在(不像@Mike Graf的第二种方式)在Packagist上发布它是差别不大(此外,Github 目前也以 npm 包的形式提供包服务),唯一的区别是注册后在 packagist 界面上直接输入 URL。

  2. 此外,它的缺点是它不能依赖使用这种方法的外部库,因为递归存储库定义在 Composer 中不起作用。此外,由于它,它似乎有一个“错误”,因为递归定义在依赖项中失败,在根目录中显式重新指定存储库似乎还不够,而且包中的所有依赖项都必须被重新指定。

使用 作曲家文件 (2012 年 10 月 18 日 15:13 igorw 回答)

 {
    "repositories": [
        {
            "url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
            "type": "git"
        }
    ],
    "require": {
        "gedmo/doctrine-extensions": "~2.3"
    }
}

没有 作曲家文件 (2013 年 1 月 23 日 17:28 Mike Graf 回答)

 "repositories": [
    {
        "type":"package",
        "package": {
          "name": "l3pp4rd/doctrine-extensions",
          "version":"master",
          "source": {
              "url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
              "type": "git",
              "reference":"master"
            }
        }
    }
],
"require": {
    "l3pp4rd/doctrine-extensions": "master"
}

原文由 FantomX1 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题