我有两个项目yiisoft/yii2-app-basic
和yiisoft/yii2-app-advanced
我使用composer安装了大约10分钟。我注意到在第二个中所有依赖项都使用dev-master
作为'版本'尽管依赖信息是相同的,例如:
Installing yiisoft/yii2 (dev-master a946a0a)
Cloning a946a0a212625d0cf655e947c835e8d6d28dd2d7
这看起来有点浪费,所以这是设计的吗?如果是这样的话?最后,如果可能,如何从缓存中安装dev-master
版本?
答案 0 :(得分:2)
当需要分支时,Composer默认会克隆存储库。由于Composer不会在缓存中保留存储库,因此必须将其克隆两次。
如果您不想克隆,但下载内容,则可以运行composer update --prefer-dist
,如果可能,Composer将尝试下载已发布的ZIP。在Github和Bitbucket上托管的项目也提供从存储库下载任何提交,因此这将用于这些情况。然后缓存并重复使用下载。
请注意,如果稍后运行更新,克隆存储库可能会更快,因为下载一个小差异数据的数据少于下载整个新ZIP文件的数据,而几乎所有文件都未更改。
从一种下载方法切换到另一种下载方法需要删除供应商文件夹和composer.lock
文件,AFAIK。
答案 1 :(得分:-1)
我最近遇到了同样的问题 - 问题在于composer.lock会锁定给定包的某些提交。删除composer.lock为我解决了问题。