У меня есть эта строка в моем файле composer.json:
"require": {
...
"friendsofsymfony/user-bundle": "~2.0@dev",
...
},
Что означает тильда ~
в ~2.0@dev
точно? Является ли это заполнитель и всегда должен получать такие подделки, как 1.2.0
, 2.2.0
, 3.2.0
и т.д.? Не имеет смысла (и будет выполняться подстановочным знаком *
).
документация composer.json ничего не говорит о тильде.
Я прошу, потому что я только что прочитал о проблеме безопасности в блоге Symfony, и они рекомендуют перейти на версию 1.3.3. Но выяснить версию FOSUserBundle не так просто (я не смог найти файл, содержащий версию).
Тильда означает следующий значительный выпуск. В вашем случае это эквивалентно >= 2.0, < 3.0
.
Полное объяснение находится на Страница документации Dilde Version Tilde:
Оператор
~
лучше всего объясняется примером:~1.2
эквивалентен>=1.2 <2.0.0
, а~1.2.3
эквивалентен>=1.2.3 <1.3.0
.Другой способ взглянуть на это состоит в том, что использование
~
указывает минимум версии, но позволяет последним указанным цифрам идти вверх.
Seldeak, приведенный ниже, представляет собой простое объяснение документации Composer.
Tilde
полезен для проектов, которые поддерживают библиотеки, используя схему semantic versioning
.
semantic versioning
больше ориентируется на next significant release
.
Для Composer этот оператор означает предоставление второстепенных выпусков (которые могут включать исправления), не позволяя основной версии (которая не может быть обратной совместимостью) при установке и обновлении.
Например: ~4.1
позволит версии проекта >=4.1
, но <5.0
.
~2.2
означает 2.2 и любой 2.x, где x равен 2 или выше.~2.1.3
также является любым 2.1.x, где x равен 3 или выше.~2.0
отличается от2.*
? Это полезно только если последняя цифра не 0?