Могу ли я взять конкретную фиксацию с композитором?

Можно ли получить определенный запрос на растяжение с помощью композитора? Как конкретная фиксация от вилки? Как бы выглядела директива?

edit: context Это было бы полезно, поэтому мне не нужно ждать создания нового тега.  Я уверен, что он будет объединен, однако я не знаю, будет ли когда-нибудь разработчикам шанс, и я предпочел бы не откладывать рабочий процесс, в котором я нахожусь...

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

edit 3: example Я пытаюсь вытащить этот https://github.com/valorin/dispatcher/commit/c566eb6902f378abd59943e7ea09f61e734c8960 без толку, я попробовал

    "valorin/dispatcher": "develop#c566eb6902f378abd59943e7ea09f61e734c8960"

и

    "indatus/dispatcher": "develop#c566eb6902f378abd59943e7ea09f61e734c8960"

изменить 4: большой успех

"require": {
        "indatus/dispatcher": "dev-develop#c566eb6"
}

добавление префикса dev- сделало трюк

Ответы

Ответ 1

Вы не можете напрямую ссылаться на запрос на перенос, но вы всегда можете получить конкретную фиксацию. Вам просто нужно найти хеш фиксации, который вводит запрос на pull. (Если вы используете github на вкладке Commits).

Тогда вам понадобится использовать что-то подобное в вашем composer.json -

 "require": {
    "mysoftware/thesoftware": "dev-master#3f38376d"
}

Где mysoftware/thesoftware - это обычная вещь имени поставщика/программного обеспечения, которую вы использовали бы, а часть после "#" в правой части - это конкретный хеш фиксации, который вы хотите.

Ответ 2

Да: вам просто нужен идентификатор фиксации. Скажем, вы хотите втянуть эту фиксацию в Ardent (Laravel framework, PHP) - вы можете заставить ее совершить с

"require": {
    "laravelbook/ardent": "master#9fbe73399d84fc726dc9e122955de444f4fb4901"
}

Чтобы вытащить из вилки, вам просто нужно указать эту вилку в требовании. Например, это одна из моих вилок другого репо. Чтобы получить это сообщение, я могу потребовать это

"require": {
    "JoeChilds/Swiftlet": "master#effd5c59f398d56fec261cf1d73a7397cdf78a56"
}

Ответ 3

Предлагаемое и утвержденное решение работает для загрузки коммитов, уже объединенных в основной репозиторий.

ЕСЛИ ВЫ ХОТИТЕ ЗАГРУЗИТЬ КОМИТЕТ ИЗ ЗАПРОСА НА ПУЛЬП НЕ СЛЕДУЕТ, вам нужно следовать по другому пути.

Предположим, что у вас есть пакет vendor/package и что "RandomUser" создает вилку на GitHub, создает новую ветвь patch-1 и записывает на нее некоторое редактирование, которое вы хотите проверить, загружая их через композитор.

Затем ваш файл composer.json должен быть записан следующим образом:

{
    "type": "project",
    "license": "proprietary",
    "require": {
        ...
        "vendor/package": "dev-patch-1#1234567890",
        ...
    },
    ...
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/RandomUser/Package.git"
        }
    ]
}

Как вы можете видеть, в разделе require файла composer.json вы запрашиваете пакет как обычно, НО вы добавляете конкретную ветвь dev-patch1, префикс которой она имеет dev-, чтобы уменьшить минимальную стабильность до dev и добавив #1234567890 конкретный идентификатор фиксации.

Затем вы также добавляете конкретный репозиторий пользователя, который совершил PR: это позволяет Composer загружать репозиторий git, проверять существующие ветки на нем, читать его файл composer.json и использовать его для установки вам зависимость.