Composer只查找Gitlab托管包

时间:2017-09-12 09:17:38

标签: composer-php gitlab packages

我创建了一个包含一些用于版本控制的注释标记的包(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.json中的版本(可能与git标记冲突)
  • 使用过的标签是带注释的标签,并被推送到仓库。

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

1 个答案:

答案 0 :(得分:0)

当Composer尝试阅读回购时,Gitlab并不总是提供标记信息。

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

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

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