2012-11-16 53 views
4

我的項目基於我從original Symfony SE repository克隆的Symfony標準版。 Symfony當然會發佈其自己的composer.jsoncomposer.lock文件,說明它的依賴關係。升級Symfony2標準版時解決Composer合併衝突

我爲我的項目開發使用master分支,並且自項目開始以來我已將自己項目的依賴關係添加到composer.json並將其鎖定爲composer.lock

但現在是時候更新我的項目以使用Symfony SE 2.1.3。

我有Symfony的標準版回購添加遠程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鎖定依賴項合併到我自己項目的鎖定依賴項中(其中包括我的代碼和Symfony 2.1.0的代碼)。手動合併這將是非常乏味的!

composer.lock中解決這些衝突的最佳方法是什麼?

我應該在執行git checkout -- composer.lock時忽略composer.lock中的合併衝突,它會在啓動合併之前將composer.lock恢復到其內容?我想,那麼我可以運行composer update每個依存性Symfony2的SE要求已在新composer.json改變我只是合併了更新。

或者我應該接受被合併在所有的變化與composer.lock,提交他們,後來乾脆全部更新我的項目依賴項通過運行composer update?這實際上會產生一個全新的鎖定文件,無論如何,Symfony 2.1.3和我自己的依賴關係都會被鎖定。我只是不確定是否需要鎖定文件的上游更新,如果我也得到最新的composer.json更改。

回答

2

我會說最好的/理想的情況是,如果你有一些穩定的要求(不是充滿開發主人..),那麼你可以rm composer.lock(或git checkout)並運行更新以確保你會得到最新的一切依賴。

如果這是不可能的,那麼你也可以恢復上游的變化,然後composer update <specific packages>來加快速度。然而,這是容易出錯且乏味的,所以我認爲最好的方法是確保在項目中有足夠嚴格的依賴關係,以便您可以無懼地運行作曲家更新。