2012-11-28 66 views
22

我正在通過作曲家更新symfony verdors。我總是做它用:如何避免作曲家丟棄更改消息

php composer.phar update 

但最近版本的作曲家,更新之前,每個包顯示如下消息:修飾

- Updating doctrine/data-fixtures dev-master (a95d783 => a28b6bd) 
The package has modified files: 
M .gitignore 
M .gitmodules 
M LICENSE 
M README.md 
M UPGRADE 
M composer.json 
M lib/Doctrine/Common/DataFixtures/AbstractFixture.php 
M lib/Doctrine/Common/DataFixtures/DependentFixtureInterface.php 
M lib/Doctrine/Common/DataFixtures/Event/Listener/MongoDBReferenceListener.php 
M lib/Doctrine/Common/DataFixtures/Event/Listener/ORMReferenceListener.php 

-10更多的文件,選擇「V」可以查看完整的列表 放棄更改[y,n,v,s,?]?

如何避免這種情況?

回答

0

如何不修改供應商文件?如果它們最有可能被修改,那是因爲行結尾的一些混亂的git設置。見https://help.github.com/articles/dealing-with-line-endings

+0

仍然有時發生後。我看到有服務器的人在crontab上chmod與所有供應商的權限混淆。或者在調試供應商庫時,也可能發生這種情況 – Ascherer

+2

由於git filemode,這也可能發生,特別是當供應商文件是bin中的符號鏈接時。 – gidmanma

+1

和錯誤測試,有時你需要在供應商文件中var轉儲,以查看究竟發生了什麼...並且你可能不會總是把這些變化放回原來的狀態......也許是一個空間被添加等等。 – HappyCoder

16

替代@lemats解決方案,您可以修改composer.json文件有:

"config": { 
     "discard-changes": true 
    }, 

值得沒有這個選項踢你必須運行在--no-interaction模式

php composer.json install --no-interaction

雖然我@Seldaek同意你不應該修改這些廠商的文件,但有時你不得不猴子打補丁:(

+3

如果是重要的修正,您可以隨時對供應商回購進行拉取請求 –

26

兩個@lemats和@禮 - sanaie的答案是不完整的 - 不需要任何交互(-n)作曲者的選項才能獲得真正的更新而無任何問題(請參閱https://github.com/composer/composer/pull/1188#issuecomment-16011533)。

所以

php composer.phar config --global discard-changes true 

後或修改composer.json

"config": { 
    "discard-changes": true 
}, 

使用

php composer.phar update -n