【问题标题】:Updating project version: Composer更新项目版本:Composer
【发布时间】:2015-08-24 13:15:24
【问题描述】:

使用composer时更改版本号的正确方法是什么?考虑当前的情况:

你有masterdevelop 分支,你的版本是1.0.0。出现一个严重错误,您必须创建一个 hotfix-1.0.1 分支(从 master)来修复它并合并回 masterdevelop。一旦你即将合并,你更新 "version":"1.0.1" 内部 composer.json

现在呢?在我的情况下,我运行了 composer update 并更新了几个依赖项(这不是我运行它的原因,我只是认为每次 composer.json 更改时都必须运行它),最终在 1 小时内解决了冲突合并分支时打开composer.lock

我是否必须在更新"version" 后运行composer update(或任何其他作曲家命令),或者这不是必需的,我可以只使用git commitgit push

【问题讨论】:

    标签: git version composer-php


    【解决方案1】:

    如果您使用受支持的版本控制系统(Git、Mercurial 或 SVN),您的 composer.json 文件中不应包含“版本”键。您应该使用要发布的版本创建一个标签。

    如果你添加了一个对多个提交都有效的版本号,Composer 应该怎么做?哪个提交是真正包含版本的提交?如果您可以在 composer.json 中检查多个具有相同版本名称的提交,则“该”版本不清楚。

    此外,在此文件中手动维护正确的版本号很麻烦,在正确的时间/提交时将其递增,然后可能再次将其删除。

    由于在 vcs 中标记软件版本并不意味着对任何文件进行编辑,因此无需自动运行“composer update”。

    另请注意,composer update 仅适用于您的包的依赖项。如果在其他地方使用,锁文件将被完全忽略,仅使用 composer.json 中的版本要求。

    关于 composer.lock 中的冲突:我不会手动解决它们。我删除了包含任何内容的文件,然后再运行一次“作曲家更新”。这将创建一个新的锁定文件,该文件尊重 composer.json 中的所有当前依赖项。如果允许,它可能会更新到较新的版本,但我认为这没关系。这是一个一分钟的过程 - 如果在此之后事情中断并且测试失败,则合并可能比锁定文件中的冲突存在更多问题。

    【讨论】:

      【解决方案2】:

      更新自己的版本号时无需运行composer update。仅在要更新依赖项时运行它:

      要获取最新版本的依赖项并更新composer.lock 文件,您应该使用update 命令。

      php composer.phar update
      

      这将解决项目的所有依赖关系并将确切的版本写入composer.lock

      我强烈建议明确列出您希望更新的依赖项:

      如果您只想更新几个包而不是全部,您可以这样列出它们:

      php composer.phar update vendor/package vendor/package2
      

      您还可以使用通配符一次更新一堆包:

      php composer.phar update vendor/*
      

      【讨论】:

        猜你喜欢
        • 2021-12-10
        • 2018-04-16
        • 2013-07-15
        • 1970-01-01
        • 2017-08-25
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2018-04-28
        相关资源
        最近更新 更多