我的公司的Gitlab上有一些软件包主机。我想请求这些软件包的特定版本,但每次尝试时,作曲家都会下载最新的master分支。
composer.json:
{
"config": {
"vendor-dir": "private/class"
},
"name":"MyProject",
"repositories": [
{
"type": "vcs",
"url": "git@gitlab.XXXX.fr:user/project.git"
}
],
"require": {
"user/project": "v0.5.0"
},
"type":"project"}
我的包的存储库结构:
当我执行" composer install" :
使用包信息加载作曲家存储库
安装依赖项(包括require-dev)
分析了69个解决依赖关系的软件包
分析了67条解决依赖关系的规则
安装用户/项目(dev-master f15600a)
克隆f15600a1
它仅下载最后一次提交。
如何配置项目的composer.json文件以使用特定标记?
答案 0 :(得分:34)
如何要求特定的Git代码?
将版本要求更改为dev-master
,然后更改哈希#
和Git标记名称,例如v0.5.0
,如此:
"require": {
"vendor/package": "dev-master#v0.5.0"
}
如何要求特定的Git提交?
将版本要求更改为dev-master
,然后是哈希#
和Git提交引用,例如dd6ed3c8
,如此:
"require": {
"vendor/package": "dev-master#dd6ed3c8"
}
参考:https://getcomposer.org/doc/04-schema.md#package-links
定义您自己的套餐并设置版本和参考
使用"type": "vcs"
存储库的另一种方法是在存储库中定义自定义包"type": "package"
并使用引用。
引用可以是Git提交哈希,也可以是标记或分支名称,如origin/master
。
这会将version
与特定提交reference
联系起来,在本例中为dd6ed3c8。
"repositories": [
# ...
{
"type": "package",
"package": {
"name": "vendor/package",
"version": "v0.5.0",
"source": {
"url": "git@gitlab.server.com:vendor/project.git",
"type": "git",
"reference": "dd6ed3c8"
}
}
}
]
答案 1 :(得分:9)
拉 git标签:
{
"repositories": [
{
"type": "git",
"url": "https://gitlab.xxx.com/some/repo.git"
}
],
"require": {
"some/repo": "1.0.2"
}
}
拉最新git提交:
{
"repositories": [
{
"type": "git",
"url": "https://gitlab.xxx.com/some/repo.git"
}
],
"require": {
"some/repo": "dev-master"
}
}
拉特定git提交:
{
"repositories": [
{
"type": "git",
"url": "https://gitlab.xxx.com/some/repo.git"
}
],
"require": {
"some/repo": "dev-master#68696f39"
}
}
通过 Composer Cli 添加存储库并提取最新git提交:
composer config repositories.repo git https://gitlab.xxx.com/some/repo.git
composer require "some/repo:dev-master"
composer update
答案 2 :(得分:2)
您可以在'#'之后使用特定的版本哈希,例如:
require": {
"user/project": "dev-master#31454f258f10329ae7c48763eb898a75c39e0a9f"
}
答案 3 :(得分:2)
要求特定分支,您还可以dev-
这样的分支机构:
"require": {
"user/project" : "dev-my-branch"
},