2013-09-25 10 views
18

私はSymfony2を使い始め、多くのチュートリアルを続けています。 composer.jsonを使っていくつかの新機能をインストールしたとき、それらは常に「dev-master」と宣言していました。彼らがいつも使っている理由は分かりません。 DoctrineFixturesBundleから例:composer.jsonで「dev-master」を使用する必要がある場合は、

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

実は、私はGoogleで検索していると我々は代わりに任意のstableバージョンのdev-masterを使用する場合は、その何人かの人々が書かれました。今日のバージョンはおそらく1.5.0と明日の可能性がありますので1.6.0であるため、将来的にはいくつかの競合が発生します。

実際の作業で実際に使用しているのはdev-masterまたはspecified versionなので、なぜですか?

答えて

19

できるだけ特定の(最高で安定したタグ付き)バージョンを使用する必要があります。

composer.lockは、特定の依存関係をロックしない間は、dev-masterを用いた場合であっても...すべてのcomposer updateは、最新バージョンへの依存関係を更新し、その後ロックファイルを更新しますコミット。

もしあなたのロックファイルが何らかの形で削除/紛失し、バージョン管理下にないならば、composer installまたはcomposer updateを実行した後で、簡単に作業できないプロジェクトに終わることがあります!

単純な例では、symfony/symfonyとなります...新しいコミットは、アプリケーションを機能しない状態にしておいていつでもdev-masterブランチに新しいBC(下位互換性)ブレークを導入する可能性があります。

+9

"もしあなたのロックファイルが何らかの形で削除/紛失してバックアップされていないなら、それはかなり大きい" If "です。また、明らかにこれが当てはまる場合は、それが問題であり、「dev-master」を使用していることではありません。あなたのロックファイルが欠落する可能性がある場合は、composer.jsonを含む他のファイルも失われる可能性があります。 – Gerry

関連する問題