Поддержка версии пакета с использованием тегов git

Я являюсь автором фреймворка Restler, сейчас пытаюсь использовать правильно названные теги для управления версиями пакетов.

Я использую следующий composer.json и назвал свои теги в соответствии с рекомендациями в https://getcomposer.org/doc/02-libraries.md#tags которые вы можете увидеть по адресу https://github.com/Luracast/Restler/releases

Но packagist не перечисляет версии пакетов!

{
    "name": "luracast/restler",
    "type": "library",
    "description": "Restler is a simple and effective multi-format Web API Server framework written in PHP. Just deal with your business logic in php, Restler will take care of the REST!",
    "keywords": ["server", "api", "framework", "REST"],
    "homepage": "http://luracast.com/products/restler/",
    "license": "LGPL-2.1",
    "authors": [
        {
            "name": "Luracast",
            "email": "arul@luracast.com"
        },
        {
            "name": "Nick nickl- Lombard",
            "email": "github@jigsoft.co.za"
        }
    ],
    "require": {
        "php": ">=5.3.3"
    },
    "require-dev": {
        "luracast/explorer": "*",
        "guzzle/guzzle": "~3.1.1",
        "behat/behat": "2.4.*@stable",
        "rodneyrehm/plist": "dev-master",
        "zendframework/zendamf": "dev-master",
        "symfony/yaml": "*",
        "mustache/mustache": "dev-master",
        "twig/twig": "v1.13.0",
        "bshaffer/oauth2-server-php": "v1.0"
    },
    "suggest": {
        "luracast/explorer": "Restler's very own api explorer (see require-dev for details)",
        "guzzle/guzzle": "RESTful api HTTP client framework (see require-dev for details)",
        "behat/behat": "Behaviour driven development testing framework (see require-dev for details)",
        "rodneyrehm/plist": "Restler supports tho Apple plist xml format (see require-dev for details)",
        "zendframework/zendamf": "Support for the amf document format  (see require-dev for details)",
        "symfony/yaml": "Restler can produce content in yaml format as well (see require-dev for details)",
        "twig/twig": "Restler can render HtmlView using twig templates (see require-dev for details)",
        "mustache/mustache": "Restler can render HtmlView using mustache/handlebar templates (see require-dev for details)",
        "bshaffer/oauth2-server-php": "Restler can provide OAuth2 authentication using this library (see require-dev for details)"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/zendframework/ZendAmf.git"
        },
        {
            "type": "package",
            "package": {
                "name": "luracast/explorer",
                "version": "v3.0.0",
                "dist": {
                    "type": "zip",
                    "url": "https://github.com/Luracast/Restler-API-Explorer/zipball/v3.0.0"
                }
            }
        }
    ],
    "autoload": {
        "psr-0": {
            "Luracast\\Restler": "vendor/"
        }
    },
    "minimum-stability": "dev",
    "extra": {
        "branch-alias": {
            "v3": "3.0.x-dev"
        }
    }
}

Я вижу такие проекты, как symfony/symfony использовали аналогичные composer.json и аналогичные имена веток, но на packagist они показываются очень хорошо

Не смог придумать никакого решения! Любая помощь высоко ценится

1 ответ

Решение

Существует простой способ отладки, вы создаете composer.json, содержащий ваш репозиторий, а именно:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/Luracast/Restler"
        }
    ]
}

Тогда ты бежишь composer show -v luracast/restler, -v будет отображать детали при разборе git-репо. Вывод этой команды:

Reading composer.json of luracast/restler (3.0.0-RC1)
Skipped tag 3.0.0-RC1, tag (3.0.0.0-RC1) does not match version (3.0.0.0) in composer.json
Reading composer.json of luracast/restler (3.0.0)
Importing tag 3.0.0 (3.0.0.0)
Reading composer.json of luracast/restler (2.2.0)
Skipped tag 2.2.0, no composer file
Reading composer.json of luracast/restler (1.0.20)
Skipped tag 1.0.20, no composer file
Reading composer.json of luracast/restler (features/AOP)
Importing branch features/AOP (dev-features/AOP)
Reading composer.json of luracast/restler (features/forms)
Importing branch features/forms (dev-features/forms)
Reading composer.json of luracast/restler (features/html)
Importing branch features/html (dev-features/html)
Reading composer.json of luracast/restler (features/oauth)
Importing branch features/oauth (dev-features/oauth)
Reading composer.json of luracast/restler (features/router)
Importing branch features/router (dev-features/router)
Reading composer.json of luracast/restler (features/swagger1.2)
Importing branch features/swagger1.2 (dev-features/swagger1.2)
Reading composer.json of luracast/restler (master)
Importing branch master (dev-master)
Reading composer.json of luracast/restler (v1)
Skipped branch v1, no composer file
Reading composer.json of luracast/restler (v2)
Skipped branch v2, no composer file
Reading composer.json of luracast/restler (v3)
Importing branch v3 (3.x-dev)

name     : luracast/restler
descrip. : Restler is a simple and effective multi-format Web API Server framework written in PHP. Just deal with your business logic in php, Restler will take care of the REST!
keywords : server, api, framework, REST
versions : dev-master, 3.x-dev, v3.0.0, dev-features/swagger1.2, dev-features/AOP, dev-features/forms, dev-features/oauth, dev-features/html, dev-features/router

Как видите, теги были пропущены, потому что в них отсутствует composer.json или версия не совпадает (я вижу, что вы удалили версию в основной ветке, это правильно). Только один тег (3.0.0) был успешно импортирован и отображается во втором бите вывода в списке версий.

Другими словами, все в порядке, и новые теги, которые вы создаете из основной ветки, должны без проблем появиться на packagist вместе с 3.0.0, который уже есть.

Другие вопросы по тегам