2013-09-25 57 views
18

我開始使用Symfony2並遵循許多教程。我發現當他們使用composer.json安裝了一些新功能時,他們「始終」宣佈爲dev-master。我不知道他們爲什麼總是使用它的原因。從DoctrineFixturesBundle一個例子:在composer.json中應該使用「dev-master」嗎?

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

其實,我用Google搜索,發現了一些人寫的,如果我們使用dev-master,而不是任何stable版本。這將是未來的一些衝突,因爲今天的版本可能爲1.5.0,明天可能爲1.6.0

那麼,我們真正用在實際工程中的 - dev-masterspecified version爲什麼?

回答

19

只要可能,您應該使用特定的(標記穩定至多)版本。

雖然composer.lock確實鎖定依賴於特定的使用提交時dev-master甚至......每composer update將更新的依賴到最新版本,並隨後更新鎖文件。

如果你的鎖定文件以某種方式被刪除/丟失,並且沒有備份/在版本控制下,你可以在運行composer installcomposer update後輕鬆結束非工作項目!

一個簡單的例子是symfony/symfony本身......新提交可能會在dev-master分支中引入新的BC(向後兼容性)中斷,使您的應用程序處於非功能狀態。

+9

「如果你的lockfile不知何故被刪除/丟失並且沒有備份」 - 這是一個相當大的「If」。另外,顯然如果是這種情況,那麼這就是問題所在,而不是你正在使用「dev-master」。如果你的鎖文件可能丟失,那麼其他文件也可以丟失,包括composer.json。 – Gerry