Как потребовать вилку с композитором


Вот мой композитор.json, я хочу использовать вилку Nodge проекта lessphp на Github

 "repositories": [{
    "type": "package",
    "package": {
        "version": "dev-master",
        "name": "nodge/lessphp",
        "source": {
            "url": "https://github.com/Nodge/lessphp.git",
            "type": "git",
            "reference": "master"
        },
        "autoload": {
            "classmap": ["lessc.inc.php"]
        }
    }
}],
"require": {
    "php": ">=5.3.3",
    "nodge/lessphp": "dev-master"
},

Но у меня есть эта ошибка, когда я делаю обновление:

Nodge/lessphp dev-master -> соответствующий пакет не найден.

Я не знаю, как правильно требовать эту вилку...

Есть какие-нибудь предложения?

Author: Neilime, 2012-11-21

6 answers

Наиболее распространенный (и более простой) способ сделать это - использовать репозиторий VCS.

Все, что вам нужно сделать, это добавить свою вилку в качестве репозитория и обновить ограничение версии, чтобы указать на вашу пользовательскую ветвь. Ваше пользовательское имя ветви должно иметь префикс с dev-.

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

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/igorw/monolog"
        }
    ],
    "require": {
        "monolog/monolog": "dev-bugfix"
    }
}

Обратите внимание, что вы не изменяете инструкцию require, кроме как указываете свою ветвь исправления ошибок. Вы все еще ссылаюсь на вышестоящий пакет (monolog/monolog), не ваша личная вилка (igorw/monolog). Вы можете прочитать подробности в документах

 148
Author: Seldaek, 2016-11-04 01:29:11

Использование VCS работает:

"name": "test/test",
"repositories": [{
    "type": "vcs",
    "url": "http://github.com/Nodge/lessphp"
}],
"require": {
    "leafo/lessphp": "dev-master"
},

Но если мне потребуется модуль с этим composer.json, он не будет работать. Он устанавливает исходный проект, а не вилку.

Пример

"name": "example/example",
"require": {
    "test/test": "dev-master"
},

Я должен еще раз упомянуть хранилище. Это нормально?

 37
Author: Neilime, 2015-08-31 10:40:31

Если вы не можете заставить ответ @Neilime работать на вас, убедитесь, что ваша вилка использует другую ветвь.

Например, внесите свои изменения в ветвь на вашей ветке под названием my-bugfix, не добавляйте префикс dev- в название вашей ветви, но в файле composer.json вы должны его добавить. Ваш файл композитора будет выглядеть следующим образом:

"repositories":
[
    {
        "type": "vcs",
        "url": "http://github.com/yourname/packageName"
    }
],
"require": {
    "owner/packageName": "dev-my-bugfix"
},
 22
Author: Boedy, 2017-12-20 13:54:36

В соответствии с документацией композитора http://getcomposer.org/doc/05-repositories.md#vcs , достаточно указать исходный репозиторий (не вилку) в require ("nodge/lessphp" в вашем случае). Затем Composer установит ВАШУ вилку (посмотрите код у поставщиков)

 6
Author: Elvis Ciotti, 2013-01-15 13:26:59

Обычно я добавляю узел "dist" в определение пакета. У меня никогда не было проблем с его использованием таким образом.

Однако я не могу вспомнить, откуда я взял этот трюк, для каких-либо дальнейших объяснений.

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "version": "dev-master",
                "name": "nodge/lessphp",
                "source": {
                    "url": "https://github.com/Nodge/lessphp.git",
                    "type": "git",
                    "reference": "master"
                },
                "autoload": {
                    "classmap": ["lessc.inc.php"]
                },
                "dist": {
                    "url": "https://github.com/Nodge/lessphp/archive/master.zip",
                    "type": "zip"
                }
            }
        }
    ],
    "require": {
        "nodge/lessphp": "*"
    }
}
 1
Author: user3497737, 2016-02-20 12:10:18

Я перепробовал много вариантов, но после того, как я получил этот пост, я увидел свет, и это просто сработало идеально.

Вот что вам нужно сделать:

1-Разветвление репозитория

2 - Создайте ветвь и внесите необходимые изменения.

3 - Добавьте метку репозитория в файл composer.json

"repositories": [

        {
            "type": "vcs",
            "url": "https://github.com/user/yourforkname"
        }
    ]

4 - В командной строке внутри вашего проекта требуется ваша вилка следующим образом:

composer require vendor/packagename:dev-branchname

И Вуаля!!

У вас работает версия вилки

 1
Author: Luis Mata B., 2018-05-13 14:38:53