Обновление файла Deps Symfony2 вручную для получения Doctrine 2.2? - PullRequest
7 голосов
/ 16 марта 2012

Можно ли вручную обновить файл deps, чтобы получить последнюю версию Doctrine 2.2 ? Я хотел бы использовать новый компонент Paginator . В общем, я думал настроить deps на:

[doctrine-common]
    git=http://github.com/doctrine/common.git
    version=2.2.1

[doctrine-dbal]
    git=http://github.com/doctrine/dbal.git
    version=2.2.1

[doctrine]
    git=http://github.com/doctrine/doctrine2.git
    version=2.2.1

Удалите deps.lock и сделайте:

php bin/vendors update

Как вы думаете, это сработает?

РЕДАКТИРОВАТЬ : файл будет выглядеть так: http://pastebin.com/FEDMNhii

Ответы [ 2 ]

8 голосов
/ 17 марта 2012

По моему мнению, вся работа, предложенная позолотой , не нужна и слишком осторожна. Конечно, вы можете вручную обновить файл deps, используя все, что вы захотите. В настоящее время я использую Doctrine \ Common (2.2.1), Doctrine \ DBAL (2.2.1) и Doctrine (2.2.1) на Symfony 2.0.11 без проблем.

Вам нужно беспокоиться не о библиотеках (обычно), а о пакетах , которые используют библиотек, которые требуют определенных версий. Например, Symfony2 не имеет прямой зависимости ни от какой версии Doctrine - но DoctrineBundle делает.

Перед обновлением пакета / библиотеки обычно полезно проверить их необходимые зависимости на Packagist.org . Найдите пакет, который вы хотите обновить, и посмотрите, какие требуемые зависимости они определяют. Примечание: Это не потребуется в Symfony 2.1, поскольку для управления библиотеками поставщиков будет использоваться Composer .

Хотя вы никогда не узнаете, работает ли что-то с вашей установкой или нет, если вы не попробуете. Конечно, не делайте глупостей - но нет причин бояться ломать вещи, обновляя библиотеки поставщиков. Сохраните свой код в Git, и вы сможете легко отменить изменения. Смотрите: Как создать и сохранить проект Symfony2 в Git


Кроме того, при указании version=#.#.# в deps - даже если у вас вообще нет файла deps.lock, вы всегда будете получать один и тот же хэш коммита, поскольку вы указываете тег Git в хранилище.

Некоторые пакеты, вместо предоставления номеров версий, будут предлагать различные ветви для управления совместимостью с несколькими версиями Symfony. Таким образом, вы можете увидеть что-то вроде version=origin/2.0, что означает, что скрипт производителя извлечет последнюю фиксацию в ветке с именем 2.0 хранилища. Сопровождающий, скорее всего, попытается сохранить эту ветку всегда совместимой с Symfony 2.0.x.

0 голосов
/ 16 марта 2012

Удаляя файл deps.lock, вы, очевидно, подвергаете себя риску получения нестабильного кода.

Я использовал следующие шаги, чтобы минимизировать риск что-либо сломать:

  • Запишите текущий хеш коммита компонентов, которые вы хотите обновить с deps.lock
  • Найдите хеш коммита в GitHub и запишите его.
  • Перейдите в каталог компонента ивведите git checkout [commit], где [commit] - новый хеш.
  • Очистите кэш и убедитесь, что сайт все еще работает более или менее.
  • Вставьте новый хеш коммита в deps.lock иrun bin/vendors install

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

...