Я работаю над экспериментальным проектом с использованием пока еще не выпущенного Laravel 5. Кажется, что недавний коммит фактически сломал вещи, но вместо того, чтобы ждать решения, я бы просто продолжил использовать версию разработки, которую я знаю, чтобы работать во время мониторинга зафиксировать журнал. Мой текущий composer.json
Файл выглядит следующим образом (соответствующий фрагмент):
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "~5.0",
"illuminate/html": "~5.0"},
Я пытаюсь сделать это:
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "~5.0#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",
"illuminate/html": "~5.0"},
в документы Composer поддерживает возможность привязки к определенному SHA, однако при запуске composer update
Я получаю сообщение:
[UnexpectedValueException]
Could not parse version constraint ~5.0#cd37f40bba5dced6b1c30d313df2e46c5c33a62c:
Invalid version string "~5.0#cd37f40bba5dced6b1c30d313df2e46c5c33a62c"
Конечно, я пробовал разные варианты (5.0#...
, 5#...
и т. д.) но все они выдают одно и то же сообщение об ошибке. Вклад приветствуется!
Вместо этого вы должны использовать псевдоним ветви. Вы должны использовать 5.0-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c
как версия:
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "5.0-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",
"illuminate/html": "~5.0"},
Вы можете попробовать с:
"laravel/framework": "5.0.x-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",
вместо:
"laravel/framework": "~5.0#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",
и установите его, используя:
composer install --prefer-source
Мой точный composer.json
файл был:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "5.0.x-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",
"illuminate/html": "~5.0"},
"config": {
"preferred-install": "dist"},
"minimum-stability": "dev"}
Однако вы должны заметить, что во время установки отображается следующее сообщение:
Installing laravel/framework (dev-master cd37f40)
Cloning cd37f40bba5dced6b1c30d313df2e46c5c33a62c
cd37f40bba5dced6b1c30d313df2e46c5c33a62c is gone (history was rewritten?), recovered by checking out 5300b9eb19b5aeac8746835558419d274ee21621
кажется, что этот коммит недоступен, но я не эксперт по композиторам, поэтому могу ошибаться.
РЕДАКТИРОВАТЬ
Я перепробовал десятки других настроек, но каждый раз, или он терпел неудачу, или получал другой коммит, а не тот, который вам нужен.
Вот похожий вопрос с ответом, который мне помог:
композитор | Laravel 5 — Обновление зависимостей, но сама структура
"require": {
"laravel/framework": "dev-master#49e3c77b518547bb661b1de4fda64a3ae0c5c505",
...
}
Вздох, ответ ударил меня, как молния. https://github.com/laravel/laravel/commits/develop очевидно, что Laravel / Laravel совершает, и не Laravel / Framework фиксирует.
Даже после того, как мой нелепый надзор разрешен, мне все еще неясно, как можно на какое-то время привязаться к определенной версии laravel / laravel. Есть обходные пути, чтобы быть уверенным, но я ищу право Кстати, если такое решение существует.
Извините за вращение колеса @Wouter и @Marcin, и спасибо за вашу помощь.