Подтвердить что ты не робот

Добавление пакета с помощью Composer (через SVN)

Я создал репозиторий SVN для своей личной библиотеки PHP и добавил файл composer.json на корневом уровне:

{
        "name": "myPersonalLibrary/lib",
        "type": "library",
        "description": "Light MVC framework for PHP 5.4",
        "keywords": ["database","mvc"],
        "homepage": "http://mysite.com",
        "license": "MIT",
        "require": {
                "php": ">=5.3.0",
                "mustache/mustache": "dev-master"
        },
        "autoload": {
                "psr-0": {
                        "bbn": "src"
                }
        }
}

Затем я создал проект со следующим composer.json:

{
    "require": {
        "monolog/monolog": "1.0.*",
        "zerkalica/php-code-sniffer": "dev-master",
        "mustache/mustache": "dev-master",
        "myPersonalLibrary/lib": "*"
    },
    "repositories": [
            {
                    "type": "svn",
                    "url": "https://mysite.com/svn/myPersonalLibrary",
                    "branches-path": false,
                    "tags-path": false,
                    "trunk-path": "src"
            }
    ]
}

И когда я пытаюсь обновить свой проект, я получаю: No valid composer.json was found in any branch or tag of https...

Я думаю, что проблема исходит из моей файловой структуры, но мне не удалось найти документацию об этом:

/my_repo
  /src
    /lib
      /api
      /db
      /file
      /html
      ....
      /mvc.php
      /obj.php
  /composer.json

Я попытался опубликовать свой URL-адрес на packagist.org и получил No valid/supported repository was found at the given URL

4b9b3361

Ответ 1

Если вы используете официально рекомендованный макет репозитория с "корнем проекта" (который содержит ровно три подкаталога: /trunk, /branches и /tags), то это должно сработать для вас:

Для вашей библиотеки PHP создайте composer.json в корне проекта в соединительной линии (и скопируйте ее). Например:

{
    "name": "myProject/myLibrary",
    "description": "My Personal Library",
    "license": "proprietary",
    "require": {
        "php": ">=5.3"
    },
    "autoload": {
        "classmap": ["src/"]
    }
}

Допустим, ваш репозиторий библиотеки доступен в http://svn.example.com/path/to/myLibrary. Тогда макет будет выглядеть следующим образом:

/path/to/myLibrary
  /trunk
    /composer.json
    /src
      ...
  /branches
  /tags

Затем в проекте, где вы хотите использовать свою библиотеку, создайте композитор .json со следующим содержимым:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "http://svn.example.com/path/to/myLibrary"
        }
    ],
    "require": {
        "nette/nette": "~2.2",
        "myProject/myLibrary": "@dev"
    }
}

Ключ должен использовать @dev как необходимую версию для вашей библиотеки, если у вас еще есть composer.json в тубе. После создания тега из соединительной линии вы можете начать использовать номера версий. Например, если вы svn copy ^/trunk ^/tags/1.0.0, то вы можете использовать "myProject/myLibrary": "~1.0" как номер своей версии.

Ответ 2

Попытайтесь получить дополнительную информацию о вызове композиционного обновления -v, чтобы получить список возможных строк версии, которые вы можете использовать.

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

{
    "name": "sample/test",
    "type": "library",
    "version": "0.0.0",
    "time" : "2013-04-16",
    "description": "Testing ...",
    "repositories": [
        {
            "type": "svn",
            "url": "http://framework.zend.com/svn/framework/standard"
        }
    ],
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework1" : "dev-trunk"
    }
}

Вызов композитора с аргументом -v в качестве аргумента, вы получите список ветвей, тегов и соединительной линии, если они найдены. Я не знаю, разрешено ли false в качестве пути для тегов и ветвей...

$ composer update -v
Loading composer repositories with package information
Reading composer.json of zendframework/zendframework1 (release-0.1.1)
Skipped tag 0.1.1, no composer file was found
Reading composer.json of zendframework/zendframework1 (release-0.1.2)
Skipped tag 0.1.2, no composer file was found
Reading composer.json of zendframework/zendframework1 (release-0.1.3)
Skipped tag 0.1.3, no composer file was found
....
Reading composer.json of zendframework/zendframework1 (release-1.9.6)
Importing tag 1.9.6 (1.9.6.0)
Reading composer.json of zendframework/zendframework1 (release-1.9.7)
Importing tag 1.9.7 (1.9.7.0)
Reading composer.json of zendframework/zendframework1 (release-1.9.8)
Importing tag 1.9.8 (1.9.8.0)
Reading composer.json of zendframework/zendframework1 (trunk)
Importing branch trunk (dev-trunk)
Reading composer.json of zendframework/zendframework1 (bughuntday)
Skipped branch bughuntday, no composer file was found
Reading composer.json of zendframework/zendframework1 (development-2.0)
Skipped branch development-2.0, no composer file was found
Reading composer.json of zendframework/zendframework1 (pdo_ibm_ids_support)
Skipped branch pdo_ibm_ids_support, no composer file was found
Reading composer.json of zendframework/zendframework1 (release-1.0)
Importing branch release-1.0 (dev-release-1.0)
Reading composer.json of zendframework/zendframework1 (release-1.10)
Importing branch release-1.10 (dev-release-1.10)
....
Reading composer.json of zendframework/zendframework1 (release-1.8)
Importing branch release-1.8 (dev-release-1.8)
Reading composer.json of zendframework/zendframework1 (release-1.9)
Importing branch release-1.9 (dev-release-1.9)
Reading composer.json of zendframework/zendframework1 (rob_allen)
Skipped branch rob_allen, no composer file was found
Reading composer.json of zendframework/zendframework1 (user)
Skipped branch user, no composer file was found
Updating dependencies (including require-dev)

Вы можете спокойно игнорировать все, кроме этой строки, которая сообщает вам, что вы должны установить в качестве запрошенной версии:

Importing branch trunk (dev-trunk)