【问题标题】:Composer only finds latest version (tag) of Gitlab hosted packageComposer 仅查找 Gitlab 托管包的最新版本(标签)
【发布时间】:2018-02-20 16:31:25
【问题描述】:

我创建了一个带有一些注释标签的包,用于版本控制(1.0.0、1.0.1、1.1.0 和 2.0.0)。这个包存在于自己的主机上(所以不是通过Packagist) 在尝试要求该软件包时,composer 仅找到 2.0.0 版本,而在任何其他版本要求上都失败了。

项目使用包的Composer.php文件

{
    "name": "projectname",
    "description": "Description.",
    "keywords": ["keys"],
    "license": "Licence",
    "type": "project",
    "require": {
        ...
        "space/package-name": "~1.0" // Also tried 1.0.0, 1.0.*, ~1.0@dev - only 2.0.0 works
    }
    "repositories": [
        ...
        {
            "type": "git",
            "url": "git@gitlab.com:space/package-name.git" // Make sure package is found on specific hosting
        }
    ],
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    }

在运行composer show "space/package-name" 时,我得到versions: * 2.0.0。所以在更新时,composer会产生以下错误:

The requested package space/package-name ~1.0 exists as name/package-
name[2.0.0, dev-master] but these are rejected by your constraint.

看起来 composer 找不到任何其他版本而不是最新版本,有什么方法可以解决这个问题吗?

已检查的内容:

  • 包不包含 composer.json 中的版本(可能与 git 标签冲突)
  • 使用过的标签是带注释的标签,会被推送到 repo。

更新: 可能是 Gitlab - Composer 问题,see this comment

【问题讨论】:

    标签: composer-php gitlab packages


    【解决方案1】:

    当 Composer 尝试读取 repo 时,Gitlab 并不总是提供标签信息。

    解决方法:还要在composer.json中添加版本信息:

    {
        "name": "package/name",
        "version": "1.0.0",
        ...
    }
    

    这将被作曲家读取。注意:Git 标签必须与 composer.json 中的版本信息匹配! (否则可能会导致错误)

    【讨论】:

      猜你喜欢
      • 2014-04-30
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2016-06-30
      • 2015-04-09
      • 1970-01-01
      相关资源
      最近更新 更多