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

Как заставить Composer загрузить последнюю фиксацию в главной ветке из GitHub для пакета?

Я пытаюсь заставить Composer загрузить последнюю фиксацию для пакета Behat/MinkSelenium2Driver. В этом конкретном репо есть только ведущая ветвь. Я пробовал каждый метод, о котором я могу думать, включая удаление файлов и возможность вернуть их обратно, чтобы заставить его работать, но это не так.

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

В частности, я хочу получить эту фиксацию: https://github.com/Behat/MinkSelenium2Driver/commit/2e73d8134ec8526b6e742f05c146fec2d5e1b8d6

Спасибо, Патрик

4b9b3361

Ответ 1

Существует только один способ захватить головку репозитория:

"require": { "behat/mink-selenium2-driver" : "dev-master" }
"minimum-stability": "dev"

Хорошо, по крайней мере два пути:

"require": { "behat/mink-selenium2-driver" : "dev-master as 1.1.x-dev" }
"minimum-stability": "dev"

Возможно, по крайней мере три способа:

"require": { "behat/mink-selenium2-driver" : "dev-master#2e73d8134ec8526b6e742f05c146fec2d5e1b8d6" }
"minimum-stability": "dev"

Поскольку этот репозиторий фактически сглаживает главную ветвь как 1.1.x-dev, это также будет работать без минимальной стабильности, затрагивающей все остальные пакеты:

"require": { "behat/mink-selenium2-driver" : "1.1.*@dev" }

Ответ 2

Ни один из вышеперечисленных параметров не работал до тех пор, пока я не удалю файл composer.lock.

Как только я удалил файл composer.lock, он вытащил последнюю фиксацию, не указав ничего, кроме имени ветки. (dev-master в моем случае)

Итак, теперь я думаю, что буду делать:

1- удалить файл composer.lock.
2- удалить папку требований. (устаревшие файлы)
3-композитор.

Ответ 3

Просто укажите ведущую ветвь:

composer require --dev behat/mink-selenium2-driver:dev-master

PS: --dev - это просто указать его требование к тесту/разработке, возможно, что вы хотите.

Ответ 4

В нашем случае ни один из предыдущих ответов не работал. Это оказалось чем-то простым:

Композитор использует атрибут репозиториев ROOT composer.json

https://getcomposer.org/doc/04-schema.md#repositories

В нашем случае мы пытались получить последнюю фиксацию от dev-master одной из наших транзитивных зависимостей. Была проблема с крючками между github и packagist, которые препятствовали нормальной работе, и нам потребовалось пару часов, чтобы понять, что мы редактировали неправильный композитор .json(тот, который из нашей библиотеки, который несет зависимость), а не топ -level composer.json, который мы устанавливали.

Ответ 5

Я считаю, что лучший ответ - оставить минимальную стабильность при стабильной.

"minimum-stability" : "stable"

Затем в разделе "require" укажите "dev-master @dev",

"require" : {
  "ResistFascism" : "[email protected]"
}

Или вы можете делать то, что я делаю, и не использовать мастера, а создавать собственные ветки. Поэтому вместо запуска пакета ResistFascism из главной ветки укажите ветку dev в вашем composer.json.

"require" : {
  "ResistFascism" : "[email protected]"
}

Мне нравится сохранять все мои внешние пакеты на стабильных версиях, потому что это то, что я запускаю на производстве, но я часто управляю своими собственными пакетами в версиях dev. Но вы тоже можете использовать мастера. Это личное предпочтение.

Ответ 6

Чтобы загрузить последнюю версию репо, я обычно использую:

composer update behat/mink-selenium2-driver

Это обновит ваш composer.lock с помощью последней доступной ссылки фиксации.