2013-09-25 13 views
18

Symfony2'yi kullanmaya başladım ve pek çok eğiticiyi takip ediyorum. composer.json kullanarak bazı yeni özellikler yüklediklerinde, "her zaman" dev-master bildirdiklerini buldum. Her zaman neden kullandıklarını bilmiyorum. DoctrineFixturesBundle bir örnek: AslındaComposer.json'da "dev-master" kullanıldığında?

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

, ben yazılmış bazı insanlar googled ve bulduk biz herhangi stable biçiminde değil dev-master kullanın. Gelecekte bazı çatışmalar olurdu çünkü bugünkü versiyon belki de 1.5.0 ve yarın belki de 1.6.0.

Peki, pratik çalışmalarda gerçekten ne kullanıyoruz - dev-master veya specified version ve neden?

cevap

19

Mümkün olan her yerde belirli bir (etiketli kararlı en iyi) sürümü kullanmalısınız. composer.lock iken

bile dev-master kullanırken ... Her composer update son sürüme bağımlılığını güncellemek ve sonrasında da kilit dosyası güncellenir kesinleştirme belirli için bağımlılık kilitlemek yok.

Eğer lockfile nasılsa kayıp/silinir ve composer install veya composer update çalıştırdıktan sonra kolayca olmayan bir çalışma projesi ile sona erebilir versiyon kontrolü altında/backuped değil!

Basit bir örnek, symfony/symfony'un kendisidir ... yeni iletiler, uygulamanızı işlevsel olmayan bir durumda bırakarak her zaman dev-master dalında yeni BC (geriye dönük uyumluluk) kesmeleri verebilir.

+9

"Kilit dosyanız bir şekilde silinir/kaybolursa ve yedeklenmezse" - bu oldukça büyük "If". Ayrıca, durum böyleyse açıkça, o zaman sorun budur, "dev-master" ı kullanmamanız. Kilit dosyanız kaybolursa, composer.json da dahil olmak üzere diğer dosyalardan herhangi biri olabilir. – Gerry