提问者:小点点

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


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

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

我的包的存储库的结构:

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

当我执行“composer安装”时:

使用包信息加载composer存储库

安装依赖项(包括需要开发人员)

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

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

>

克隆f15600a1

它只下载最后一次提交。

如何配置作曲家。我的项目的json文件是否使用特定标记?


共3个答案

匿名用户

如何要求特定的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-链接

定义自己的包并设置版本和引用

使用“类型”:“vcs”的存储库的替代方法是在存储库内定义一个自定义包“类型”:“包”,并使用引用。

引用可以是Git提交哈希,也可以是标记或分支名称,如origin/master

这将把version绑定到特定的提交引用,在本例中是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"
      }
    }
  }
]

匿名用户

按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

匿名用户

要需要一个特定的分支,你也可以像这样仅仅dev-分支名称:

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