web-dev-qa-db-fra.com

Quand "dev-master" doit être utilisé dans composer.json?

Je commence à utiliser Symfony2 et à suivre de nombreux tutoriels. J'ai constaté que lorsqu'ils ont installé de nouvelles fonctionnalités à l'aide de composer.json, ils ont "toujours" déclaré dev-master. Je ne connais pas les raisons pour lesquelles ils l'utilisent toujours. Un exemple de DoctrineFixturesBundle :

{
    "require": {
        "doctrine/doctrine-fixtures-bundle": "dev-master"
    }
}

En fait, j'ai googlé et trouvé des gens qui ont écrit que si nous utilisons le dev-master au lieu d'une version stable. Il y aurait des conflits à l'avenir parce que la version d'aujourd'hui peut-être 1.5.0 et demain peut-être 1.6.0.

Donc, ce que nous utilisons vraiment dans les travaux pratiques - dev-master ou specified version et pourquoi?

22
lvarayut

Dans la mesure du possible, vous devez utiliser une version spécifique (au mieux stable avec étiquette).

Tandis que composer.lock verrouille la dépendance sur un commit spécifique même lorsque vous utilisez dev-master ... chaque composer update mettra à jour la dépendance vers la dernière version et mettra ensuite à jour le fichier de verrouillage.

Si votre fichier de verrouillage est en quelque sorte supprimé/perdu et qu'il n'est pas sauvegardé/sous contrôle de version, vous pouvez facilement vous retrouver avec un projet qui ne fonctionne pas après avoir exécuté composer install ou composer update!

Un exemple simple serait symfony/symfony lui-même ... de nouveaux commits pourraient introduire de nouvelles ruptures BC (compatibilité descendante) dans le dev-master branche à tout moment en laissant votre application dans un état non fonctionnel.

23
Nicolai Fröhlich