2013-09-25 14 views
18

Sto iniziando a utilizzare Symfony2 e seguendo molti tutorial. Ho scoperto che quando hanno installato alcune nuove funzionalità usando composer.json, esse "sempre" hanno dichiarato dev-master. Non conosco i motivi per cui lo usano sempre. Un esempio dal DoctrineFixturesBundle:Quando "dev-master" dovrebbe essere usato in composit.json?

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

In realtà, ho Googled e trovato alcune persone che scritte Se usiamo la dev-master invece di qualsiasi versione stable. Sarebbe qualche conflitto in futuro perché la versione oggi potrebbe essere 1.5.0 e domani forse 1.6.0.

Quindi, cosa usiamo veramente nei lavori pratici - dev-master o specified version e perché?

risposta

19

È necessario utilizzare uno specifico (tag stabile nella migliore delle ipotesi) la versione per quanto possibile.

Mentre composer.lock fa bloccare la dipendenza ad una specifica commit anche quando si utilizza dev-master ... ogni composer update aggiornerà la dipendenza alla versione più recente e poi aggiornare il file di lock.

Se il file di blocco viene in qualche modo cancellato/perso e non è sottoposto a backup/sotto controllo di versione, è possibile finire facilmente con un progetto non funzionante dopo aver eseguito composer install o composer update!

Un semplice esempio potrebbe essere symfony/symfony stesso ... nuovi commit potrebbero introdurre nuove interruzioni BC (retrocompatibilità) nel ramo dev-master in qualsiasi momento lasciando l'applicazione in uno stato non funzionale.

+9

"Se il tuo lockfile viene in qualche modo cancellato/perso e non viene eseguito il backup" - questo è un grande "Se". Inoltre, chiaramente se questo è il caso, allora questo è il problema, non che tu stia usando "dev-master". Se il tuo file di blocco può scomparire, lo stesso vale per qualsiasi altro file, incluso il compositore.json. – Gerry

Problemi correlati