Composer无法从缓存中加载“dev-master”版本

时间:2014-07-22 17:36:40

标签: php composer-php

我有两个项目yiisoft/yii2-app-basicyiisoft/yii2-app-advanced我使用composer安装了大约10分钟。我注意到在第二个中所有依赖项都使用dev-master作为'版本'尽管依赖信息是相同的,例如:

,重新下载
Installing yiisoft/yii2 (dev-master a946a0a)
Cloning a946a0a212625d0cf655e947c835e8d6d28dd2d7

这看起来有点浪费,所以这是设计的吗?如果是这样的话?最后,如果可能,如何从缓存中安装dev-master版本?

2 个答案:

答案 0 :(得分:2)

当需要分支时,Composer默认会克隆存储库。由于Composer不会在缓存中保留存储库,因此必须将其克隆两次。

如果您不想克隆,但下载内容,则可以运行composer update --prefer-dist,如果可能,Composer将尝试下载已发布的ZIP。在Github和Bitbucket上托管的项目也提供从存储库下载任何提交,因此这将用于这些情况。然后缓存并重复使用下载。

请注意,如果稍后运行更新,克隆存储库可能会更快,因为下载一个小差异数据的数据少于下载整个新ZIP文件的数据,而几乎所有文件都未更改。

从一种下载方法切换到另一种下载方法需要删除供应商文件夹和composer.lock文件,AFAIK。

答案 1 :(得分:-1)

我最近遇到了同样的问题 - 问题在于composer.lock会锁定给定包的某些提交。删除composer.lock为我解决了问题。