开放的编程资料库

当前位置:我爱分享网 > Python教程 > 正文

从分支运行 Composer 时修复版本问题

对于ZendFramework组件存储库,我们偶尔需要将更改反向移植到2.4LTS版本。这需要检查基于最后一个LTS标记的分支,应用补丁(通常通过编辑将PHP5.5语法转换为PHP5.3),并针对PHP5.3和5.4运行测试。

当然,要运行测试,您需要安装正确的依赖项集。如果您有任何组件依赖项,这意味着运行composerupdate以确保您获得这些组件的2.4版本组件。

这就是我的故事开始的地方。

不正确的依赖

昨天我在使用我们的一个组件zend-validator时遇到了这种情况。该组件依赖于zend-uri,不幸的是,它也依赖于zend-validator。通常这不是问题,因为组件已在任何其他ZF组件上指定版本self.version

问题发生在我在作曲家不知道的分支中时。在那种情况下,Composer不知道需要什么版本,并假定是最新的。对于ZF组件,它想使用2.5.x@dev,但不能,因为我是PHP5.3。然后它回退到2.4版本,但找不到与发布分支名称直接匹配的版本(在本例中为dev-release-2.4.)。

修复依赖关系

我第一次尝试修复是更改zend-validator依赖项。起初,我尝试了^2.4.0,但这与说>=2.4.0,<3.0.0是一样的——给我留下了同样的问题Composer更喜欢2.5版本。

然后我将其更改为~2.4.0,但问题随后变成了依赖项的问题,这些依赖项仍在指定self.version,并且无法解析为已知版本。

强制版本

幸运的是,我在Composer故障排除页面上找到了一个解决方案。该技巧专门针对Travis-CI,但在本地同样适用。本质上,您强制Composer将包报告为特定版本。

在我的例子中,我做了以下事情:

$ COMPOSER_ROOT_VERSION=2.4.7 composer install

瞧!使用self.version的任何依赖项现在都解析为2.4.8,并且我的根包语义版本说明符(~2.4.0)得到了适当的尊重。

未经允许不得转载:我爱分享网 » 从分支运行 Composer 时修复版本问题

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏