4

私のプロジェクトは、元のSymfonySEリポジトリから複製したSymfonyStandardEditionに基づいています。もちろん、symfonyは、依存関係に注意して独自のファイルを配布しcomposer.jsonます。composer.lock

私は自分のプロジェクトの開発にブランチを使用していますmaster。プロジェクトを開始してから、自分のプロジェクトの依存関係をに追加しcomposer.json、でロックしましたcomposer.lock

しかし今度は、SymfonySE2.1.3を使用するようにプロジェクトを更新します。

Symfony StandardEditionリポジトリをgitリモートとして追加しました:

git remote add symfonyse git://github.com/symfony/symfony-standard.git

そして、symfonyseリポジトリ2.1ブランチからの最新の変更をマージして、最新の2.1開発を取得できます。

git pull symfonyse 2.1

もちろん、そこにプルした後composer.json、私は自分の依存関係で変更し、composer.lock以前は古い依存関係にロックされていたため、マージの競合が発生します。

しかし、composer.lock現在競合しているのは、最新のSymfony2 SEのロックされた依存関係を自分のプロジェクトのロックされた依存関係(私のdepsとSymfony 2.1.0のdepsを含む)にマージしようとしています。これを手動でマージするのは非常に面倒です。

これらの競合を解決するための最良の方法は何composer.lockですか?

マージを開始する前にコンテンツに戻るcomposer.lockことで、マージの競合を無視する必要がありますか?その後、 Symfony2 SEが必要とする依存関係ごとに実行できると思います。これは、マージしたばかりの新しい変更で更新されています。git checkout -- composer.lockcomposer.lockcomposer updatecomposer.json

または、とマージされるすべての変更を受け入れcomposer.lock、それらをコミットしてから、実行してすべてのプロジェクト依存関係を更新する必要がありcomposer updateますか?これは本質的に、Symfony2.1.3と私自身の依存関係のロックを含むまったく新しいロックファイルを生成します。最新の変更も取得している場合、ロックファイルのアップストリーム更新が必要かどうかはわかりませんcomposer.json

4

1 に答える 1

2

最良/理想的なケースは、要件がある程度安定している場合(dev-masterでいっぱいではない場合)です。composer.lock(またはgit checkout)を実行し、updateを実行して、最新の依存関係を取得できるようにします。すべての。

それが不可能な場合は、アップストリームから変更を元に戻して、変更composer update <specific packages>を高速化することもできます。ただし、これはエラーが発生しやすく退屈な作業であるため、プロジェクトに十分に厳密な依存関係があり、恐れることなくComposerの更新を実行できるようにすることが最善だと思います。

于 2012-11-17T11:20:44.307 に答える