如何使用具有composer和私有git存储库的特定标记/版本?

时间:2016-01-14 08:31:24

标签: composer-php

我的公司的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"}

我的包的存储库结构:

  • tag v0.5.0:commit dd6ed3c8 ...
  • 提交X,Y,Z
  • tag v0.7.0:commit 15293ac6 ...
  • 最后提交f15600a1 ...

当我执行" composer install" :

  

使用包信息加载作曲家存储库

     

安装依赖项(包括require-dev)

     

分析了69个解决依赖关系的软件包

     

分析了67条解决依赖关系的规则

     
      
  • 安装用户/项目(dev-master f15600a)

         

    克隆f15600a1

  •   

它仅下载最后一次提交。

如何配置项目的composer.json文件以使用特定标记?

4 个答案:

答案 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"
  }
}

最新g​​it提交

{
  "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 添加存储库并提取最新g​​it提交

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"
}

请参阅:https://getcomposer.org/doc/04-schema.md#package-links

答案 3 :(得分:2)

要求特定分支,您还可以dev-这样的分支机构:

"require": {
    "user/project" : "dev-my-branch"
},