我正在使用symfony 2.1和作曲家,我正在尝试运行作曲家更新
但是,我一直在“有未提交的更改”,我不记得更改了供应商目录中的任何文件,它几乎每个包都会出现!
我尝试 composer install 来还原所有更改,但似乎没有效果。如果我删除锁文件并尝试安装,我会收到错误消息,例如“symfony 2.1要求symfony 2.1 - > symfony 2.1 satisfiable”。它没有意义。
如果删除供应商中的内容,我会收到相同的错误消息,并且没有安装。
我所做的一切似乎都无法奏效。是否可以使用“强制”进行更新,无论“未提交的更改”
答案 0 :(得分:14)
您可以使用composer status -v
。以下是使用此命令在vendor/
中检测文件更改的方法,以及如何解决此问题。
首先,我们验证没有修改包:
➜ SymfonyApp git:(master) ✗ composer status
No local changes
然后,我们更改供应商文件
➜ SymfonyApp git:(master) ✗ echo "modification" >> vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php
然后我们请求作曲家告诉我们修改后的供应商文件(注意-v选项,查看修改过的文件)
➜ SymfonyApp git:(master) ✗ composer status -v
You have changes in the following dependencies:
/Users/adrienbrault/Developer/SymfonyApp/vendor/symfony/symfony:
M src/Symfony/Component/HttpKernel/Kernel.php
然后我们重置供应商git存储库以将文件设置回原始状态。
➜ SymfonyApp git:(master) ✗ cd /Users/adrienbrault/Developer/SymfonyApp/vendor/symfony/symfony
➜ symfony git checkout .
➜ symfony cd -
~/Developer/SymfonyApp
最后,我们检查作曲家不再将文件视为已修改。
➜ SymfonyApp git:(master) ✗ composer status -v
No local changes
更新:作曲家现在应该帮助你处理这个
答案 1 :(得分:2)
因为这影响了在一台服务器上共享依赖关系的各种项目,因为例如供应商作者会要求我在提交错误和承诺他们的回购之前测试快速更改,我将其运行到全局设置 discard-changes to true :
php composer.phar config -g discard-changes 1
答案 2 :(得分:2)
您还可以在composer.json文件的config参数中将discard-changes
设置为true
,请参阅https://getcomposer.org/doc/06-config.md#discard-changes。
{
"name": "test",
"description": "Demonstrating concepts",
...
"config": {
"process-timeout": 1800,
"discard-changes" : true
},
...
}