我开始使用Symfony2并遵循许多教程。我发现当他们使用composer.json
安装一些新功能时,他们“总是”声明dev-master
。我不知道他们总是使用它的原因。来自DoctrineFixturesBundle的示例:
{
"require": {
"doctrine/doctrine-fixtures-bundle": "dev-master"
}
}
实际上,我搜索并发现有些人写道,如果我们使用dev-master
而不是任何stable
版本。这将是未来的一些冲突,因为今天的版本可能是1.5.0
,明天可能是1.6.0
。
那么,我们在实际工作中真正使用的是什么 - dev-master
或specified version
以及为什么?
答案 0 :(得分:21)
您应尽可能使用特定(标记为最佳稳定版)版本。
虽然composer.lock
确实将依赖项锁定到特定提交,即使使用dev-master
...每个composer update
都会将依赖项更新为最新版本,然后更新锁定文件。
如果您的锁定文件以某种方式被删除/丢失并且没有备份/受版本控制,那么在运行composer install
或composer update
后,您很容易就会得到一个不起作用的项目!
一个简单的例子就是symfony/symfony
本身......新的提交可能会在dev-master
分支中引入新的BC(向后兼容性)中断,只要你的应用程序处于非功能状态。