【问题标题】:Properly versioning a private composer repository正确控制私有作曲家存储库的版本
【发布时间】:2017-10-02 14:14:39
【问题描述】:

我在 Git 中有一个私有存储库,并且我已经设法让它作为一个包与 composer 一起正常工作。但是,我不喜欢一件事:当我指定存储库的版本时,我必须说dev-master,才能获得主分支。我想要的是能够指定存储库版本。那么,如何配置我的存储库以允许将其用作具有版本标识符的依赖项的其他存储库?

这是我的包的 composer.json,它位于我唯一的 master 分支中:

{
    "name": "username/packagename",
    "type": "mytype",
    "version": "1.0.0"
}

然后在另一个我想包含这个包的项目中,我有这个 composer.json:

{
  "repositories": [
    {
      "type": "git",
      "url": "git@githost:username/packagename.git/"
    }
  ],
  "require": {
    "username/packagename": "dev-master"
  },
}

如您所见,我必须说 'dev-master' 才能从我的主分支获取我的包,但我希望能够说 '1.0.0' 或 '^1.0.0' 或任何其他作曲家版本控制操作可用的。我必须在我的包结构中做什么才能启用正确的版本控制行为?

提前致谢!

【问题讨论】:

    标签: git package repository composer-php private


    【解决方案1】:

    创建一个标签,在此之前:删除composer.json文件中的version条目

    在master分支上创建标签的使用示例:

    git checkout master
    git tag -a 1.0.0
    git push --follow-tags
    

    使用带注释的标签将记录创建标签的日期和用户名。 Git 会询问一条消息,这对大多数人来说是无关紧要的,因此您可以填写任何您喜欢的内容。我通常选择重复标签名称。

    在标记版本之前删除version 条目应该很明显。 :)

    【讨论】:

    • 嗨,Sven,谢谢你的帮助,你能给我一个基本的用法示例吗?
    • 更新了我的答案。
    • 很好,非常感谢斯文,我搞定了!现在我指定了一个版本“^1.0.0”并且它工作正常,我希望在我添加一个新版本后它仍然可以工作:) 请注意:可能你的意思是git tag -a v1.0.0?因为我在前面加了一个没有v的版本标签,没有被composer识别出来。
    • 在前面使用v 是可选的,没有它应该可以工作。我怀疑某个地方存在临时问题,但只要它最终有效,我现在不会太介意。
    • 你说得对,Sven,在我的新包提交中,我添加了一个不带“v”前缀的标签,并且从我的其他项目作曲家将依赖项正确更新为新版本。上次可能有什么东西滑倒了,再次感谢,干杯!
    猜你喜欢
    • 2014-11-06
    • 1970-01-01
    • 2016-04-19
    • 2015-01-16
    • 2017-06-28
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    相关资源
    最近更新 更多