我主要使用composer来管理git存储库(本地和远程)。 Composer在所有历史提交中读取composer.json的每个标记实例:
Reading composer.json of tomekwi/composer-installers (v1.0.0)
Importing tag v1.0.0 (1.0.0.0)
Reading composer.json of tomekwi/composer-installers (v1.0.1)
Importing tag v1.0.1 (1.0.1.0)
Reading composer.json of tomekwi/composer-installers (v1.0.2)
Importing tag v1.0.2 (1.0.2.0)
Reading composer.json of tomekwi/composer-installers (v1.0.3)
Importing tag v1.0.3 (1.0.3.0)
Reading composer.json of tomekwi/composer-installers (v1.0.4)
Importing tag v1.0.4 (1.0.4.0)
Reading composer.json of tomekwi/composer-installers (v1.0.5)
Importing tag v1.0.5 (1.0.5.0)
Reading composer.json of tomekwi/composer-installers (v1.0.6)
Importing tag v1.0.6 (1.0.6.0)
Reading composer.json of tomekwi/composer-installers (1.x)
Importing branch 1.x (1.x-dev)
...etc
较大的存储库需要很长时间。另外它会导致github(https://circleci.com/docs/composer-api-rate-limit)
出现问题如果我理解正确,那么目的是从每个composer.json文件中提取版本号。如果作曲家只通过阅读标签名称来选择正确的版本,那将会更快。请求"tomekwi/composer-installers": "~1.0"
可能如下所示:
Reading tags of tomekwi/composer-installers
- Picked matching tag (v1.0.6)
Reading composer.json of tomekwi/composer-installers (v1.0.6)
- Installing tomekwi/composer-installers (v1.0.6)
..并且需要半秒而不是半分钟。
是否可以这样做?
答案 0 :(得分:2)
Composer不知道存储库中的包是什么。因此,必须阅读composer.json
才能找到答案。
由于软件可以重命名,因此无法保证存储库中找到的每个标签都属于同一个软件包名称。
你应该看一下托管你的本地Packagist实例,或Satis。这些工具扫描您的存储库并获取Composer工作所需的信息。 Satis也可能将找到的标签转储到ZIP文件中,这也加快了安装过程(从本地服务器解压缩下载的文件通常比克隆存储库更快)。