Могу ли я получить конкретный коммит с композитором?

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

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

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

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

    "valorin/dispatcher": "develop#c566eb6902f378abd59943e7ea09f61e734c8960"

а также

    "indatus/dispatcher": "develop#c566eb6902f378abd59943e7ea09f61e734c8960"

редактировать 4: большой успех

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

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

20

Решение

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

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

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

куда mysoftware/thesoftware это обычное имя поставщика / программного обеспечения, которое вы бы использовали, а часть после «#» в правой части — это конкретный хеш коммита, который вы хотите.

24

Другие решения

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

ЕСЛИ ВЫ ХОТИТЕ ЗАГРУЗИТЬ КОМИТ С ЗАПРОСА НА ТЯНУТЬ НЕ ИМЕЕТСЯ Вы должны идти по другому пути.

Предположим, у вас есть пакет 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 файл и использовать его для установки необходимой вам зависимости.

3

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

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

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

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