Привязка composer.json к определенному SHA Laravel 5

Я работаю над экспериментальным проектом, используя еще не выпущенный 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#... и т. д.), однако все они выдают одно и то же сообщение об ошибке. Вход приветствуется!


person Jason    schedule 30.09.2014    source источник


Ответы (4)


Вместо этого вы должны использовать псевдоним ветки. Вы должны использовать 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"
},
person Wouter J    schedule 30.09.2014
comment
Хм, нет, это тоже не работает. Я обновил соответствующую строку, чтобы читать "laravel/framework": "5.0-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c",, но получаю сообщение Could not parse version constraint 5.0-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c: Invalid version string "5.0-dev#cd37f40bba5dced6b1c30d313df2e46c5c33a62c". У меня самая последняя версия Composer. - person Jason; 30.09.2014
comment
@ Джейсон, а что, если ты попробуешь dev-master#cd37f40bba5dced6b1c30d313df2e46c5c33a62c? - person Wouter J; 01.10.2014
comment
К сожалению, я получаю, что cd37f40bba5dced6b1c30d313df2e46c5c33a62c ушел (история была переписана?), восстановлен путем проверки 49e3c77b518547bb661b1de4fda64a3ae0c5c505 при попытке этого подхода, тот же результат, что и у @marcin-nabiałek ниже. Я отправил сообщение в Laracasts, возможно, они могут пролить свет на проблему. Если да, то обязательно отчитаюсь. - person Jason; 01.10.2014
comment
@Jason, это означает, что фиксация была удалена, тогда вам следует попробовать другую фиксацию - person Wouter J; 01.10.2014
comment
Привет @Wouter Я понимаю, что это означает, что фиксация была удалена. Но глядя на https://github.com/laravel/laravel/commits/develop указывает на иное. SHA фиксации находится прямо здесь, и я могу просмотреть код этой фиксации. - person Jason; 01.10.2014
comment
@ Джейсон, это ветка разработки, а не ветка master. Поэтому вы должны использовать dev-develop# cd37f40bba5dced6b1c30d313df2e46c5c33a62c - person Wouter J; 01.10.2014

Вы можете попробовать с:

"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

так что кажется, что этот коммит недоступен, но я не эксперт по композиторам, поэтому могу ошибаться.

ИЗМЕНИТЬ

Я перепробовал десятки других настроек, но каждый раз либо сбой, либо другая фиксация, а не та, которую вы хотите.

person Marcin Nabiałek    schedule 30.09.2014
comment
Хорошо, фантастика. Собираюсь попробовать это сегодня вечером. Меня смущает отсутствующий SHA? См. https://github.com/laravel/laravel/commits/develop, я Я специально пытаюсь прикрепиться к коммиту, обозначенному сообщением Use helpers. потому что фиксация вещей Simplify определенно ломает вещи. - person Jason; 01.10.2014
comment
@Jason Джейсон, я пытался решить эту проблему, но не знаю почему. Я пробовал вчера и сегодня много настроек, но все равно ничего - person Marcin Nabiałek; 01.10.2014

Вот аналогичный вопрос с ответом, который мне помог:

композитор | laravel 5 - Обновление зависимостей, но самого фреймворка

"require": {
"laravel/framework": "dev-master#49e3c77b518547bb661b1de4fda64a3ae0c5c505",
...
}
person Eugen F    schedule 16.10.2014

Эх, ответ поразил меня, как молния. https://github.com/laravel/laravel/commits/develop явно являются laravel/ laravel фиксирует, а не фиксирует laravel/framework.

Даже после того, как моя нелепая оплошность была устранена, мне остается неясным, как на данный момент можно заблокировать конкретную версию laravel/laravel. Конечно, есть обходные пути, но я ищу правильный способ, если такое решение существует.

Извините за вращение колеса @Wouter и @Marcin, и спасибо за вашу помощь.

person Jason    schedule 01.10.2014