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

Air*_*bzh 28 composer-php

我在我公司的Gitlab上有一些软件包主机.我想请求这些软件包的特定版本,但每次尝试时,作曲家都会下载master分支的最新提交.

composer.json:

{
   "name" : "MyProject",
   "require" : {
      "user/project" : "v0.5.0"
   },
   "type" : "project",
   "repositories" : [
      {
         "url" : "git@gitlab.XXXX.fr:user/project.git",
         "type" : "vcs"
      }
   ],
   "config" : {
      "vendor-dir" : "private/class"
   }
}
Run Code Online (Sandbox Code Playgroud)

我的包的存储库结构:

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

当我执行"composer install"时:

使用包信息加载composer存储库

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

分析了69个包来解决依赖关系

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

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

    克隆f15600a1

它仅下载最后一次提交.

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

Jen*_*och 43

如何要求特定的Git标签?

将版本要求更改为dev-master,然后是哈希#和Git标记名称,例如v0.5.0,如下所示:

"require": {
    "vendor/package": "dev-master#v0.5.0"
}
Run Code Online (Sandbox Code Playgroud)

如何要求特定的Git提交?

将版本要求更改为dev-master,然后是哈希#和Git提交引用,例如dd6ed3c8,如下所示:

"require": {
    "vendor/package": "dev-master#dd6ed3c8"
}
Run Code Online (Sandbox Code Playgroud)

参考: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"
      }
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

  • 我已经尝试了这个,每次下载最后一次提交.不是请求的标记/提交 (7认同)
  • 似乎Gitlab存储库是Composer的一个问题,它只会使用Github和Bitbucket的API来下载zip存档.而在Gitlab中,它不会在结账时选择引用,也不会获取dist(存档来源) - 它只会git克隆. (2认同)
  • 也许这会有所帮助:https://github.com/wemakecustom/gitlab-composer它是Gitlab存储库的分支/标记索引器.未经测试. (2认同)

Ton*_*nyB 12

通过git标签拉:

{
  "repositories": [
    {
      "type": "git",
      "url": "https://gitlab.xxx.com/some/repo.git"
    }
  ],
  "require": {
    "some/repo": "1.0.2"
  }
}
Run Code Online (Sandbox Code Playgroud)

通过最新的git提交拉:

{
  "repositories": [
    {
      "type": "git",
      "url": "https://gitlab.xxx.com/some/repo.git"
    }
  ],
  "require": {
    "some/repo": "dev-master"
  }
}
Run Code Online (Sandbox Code Playgroud)

通过特定的git提交拉:

{
  "repositories": [
    {
      "type": "git",
      "url": "https://gitlab.xxx.com/some/repo.git"
    }
  ],
  "require": {
    "some/repo": "dev-master#68696f39"
  }
}
Run Code Online (Sandbox Code Playgroud)

通过Composer Cli 添加存储库并提取最新的git commit:

composer config repositories.repo git https://gitlab.xxx.com/some/repo.git
composer require "some/repo:dev-master"
composer update
Run Code Online (Sandbox Code Playgroud)


tot*_*tas 6

要要求特定的分支,您也可以dev-像这样使用分支名称:

"require": {
    "user/project" : "dev-my-branch"
},
Run Code Online (Sandbox Code Playgroud)