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

вот мой композитор .json, я хочу использовать Nodge fork проекта 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 → не найден соответствующий пакет.

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

Любые предложения?

Ответ 1

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

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

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

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

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

Ответ 2

Использование 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"
},

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

Ответ 3

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

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

"repositories":
[
    {
        "type": "vcs",
        "url": "http://github.com/yourname/packageName"
    }
],
"require": {
    "owner/packageName": "dev-my-bugfix"
},

Ответ 4

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

Ответ 5

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

Это то, что вы должны сделать:

1- Форк репозиторий

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

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

"repositories": [

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

4- В командной строке внутри вашего проекта требуется ваш форк, как это:

composer require vendor/packagename:dev-branchname

И вуаля !!

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

Ответ 6

Я обычно добавляю определение "dist" node к определению пакета. У меня никогда не было проблем с этим.

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

{
    "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": "*"
    }
}

Ответ 7

Итак, это 2019 год, и большинство ответов здесь уже правильные.

Однако, если вы окажетесь в ситуации, когда вам потребуется определенная ветка вашего форка (которую вы создали), сначала попросите композитора перечислить доступные версии/теги. Это сэкономило мне много времени.

Полный пример с пакетом spatie/laravel-backup.

Сначала добавьте ключ repositories в composer.json. С URL вашей вилки

"repositories": [{
   "type": "vcs",
   "url": "https://github.com/holymp2006/laravel-backup"
 }]

Получить доступные версии/теги

composer show "spatie/laravel-backup" --all

Выберите нужную версию из versions в выводе терминала, затем потребуйте эту версию

composer require spatie/laravel-backup:v5.x-dev

Ответ 8

Итак, я сделал то, что сказал документация, и он работает... так как я могу отбросить любые изменения в github обратно в свою вилку, увидев, что композитор не создал репозиторий git в папке пакета. Действительно ли я начинаю с инициализации репо и снова указываю его на вилку, или у композитора есть какой-то параметр, который мне нужно передать для создания реплики fork в папке поставщика/пакета?

Моя цель - нажать любые изменения, которые я делаю на вилку, затем сделать PR позже, но в папке пакета нет git repo.