打开symfony/symfony的包装
我开始在一个用Symfony编写的2.8版的大型项目中工作。将整个项目升级到SF 3需要数百个小时,目前还不可能。我想出了一个主意,将打开symfony/symfony的包装,symfony,symfony-2.8,Symfony,Symfony 2.8,我开始在一个用Symfony编写的2.8版的大型项目中工作。将整个项目升级到SF 3需要数百个小时,目前还不可能。我想出了一个主意,将symfony/symfony包解包为它所替代的单个包(在composer.json中输入keyreplace)。它将解锁所有锁定在self.version上的45个软件包,并允许我们在可能的情况下逐步升级任何软件包 示例:我已将条令/orm锁定在2.5.*上,无法升级到2.6(这将消除一些错误,并允许我升级PHP7.2-->7.3)因为我有symfony/con
symfony/symfony
包解包为它所替代的单个包(在composer.json
中输入keyreplace
)。它将解锁所有锁定在self.version
上的45个软件包,并允许我们在可能的情况下逐步升级任何软件包
示例:我已将条令/orm
锁定在2.5.*
上,无法升级到2.6
(这将消除一些错误,并允许我升级PHP7.2
-->7.3
)因为我有symfony/console
被symfony/symfony
锁定在版本2.8
和条令/orm:2.6
需要symfony/console:~3.0.0
。但是,我的项目允许在^3.2
版本中使用symfony/console
,因此您可以了解我的观点
我想问您,在尝试解压缩symfony/symfony
时,应用程序是否存在任何危险?到目前为止,我看不到任何危险
对于那些想回答“只需要一个更高版本的软件包”的人,请注意。由于Composer 1.7.3,这是不可能的,并且会触发版本冲突 在这种情况下,最好是分步走,仔细检查每一步的结果。当然,如果您的整个项目都包含在测试中,那么做这样的更改会简单得多,但我不知道是否是这样 我可能会这样做:
composer.json
复制到单独的目录中composer info
symfony/symfony
提供的软件包列表,例如查看composer.json
或查看PackageGist上的composer.json
中的symfony/symfony
替换为与当前版本相同的单个软件包composer install
并将实际安装的软件包的结果集与为您的项目安装的软件包进行比较。最简单的方法是比较来自两个目录的composer info
的输出。您还可以使用类似于composer info | awk-F'{print$1”“$2}| sort
的方法来获取已排序的包列表及其版本,以便更容易进行比较composer.json
都能从composer info
获得相同的结果composer.json
复制回主项目。此时,您将能够安装相同的供应商软件包,但能够单独控制它们composer why
命令,该命令允许您检查包的依赖关系,以便更好地了解哪些包会受到某些特定包版本更改的影响
祝这项任务顺利,因为仔细升级可能需要相当长的时间。我从未有幸与composer一起做过这类事情,但这可能只是因为我缺乏技能。但是Symfony 3删除了Symfony 2的折旧代码。因此,如果你仍然收到通知,那么我怀疑你会遇到很多问题。如果您没有通知,那么升级到3.4应该是直截了当的。是什么让你期望它需要数百个小时?第三方包?