【问题标题】:How to automatically pull the version number?如何自动拉取版本号?
【发布时间】:2017-03-06 23:09:33
【问题描述】:

我正在编写一个Symfony Console PHP 应用程序,其中takes a version number in the constructor

$app = new Application('myapp', '1.0');

我已经发现在发布新的 git 标签时很容易忘记修改版本号。如何动态/自动执行此操作?

除了这里,我非常深入地searched packagist,因为我确信这是一件很常见的事情,但没有发现任何东西。

一开始我想写一个函数来做这样的事情:

chdir(__DIR__);
shell_exec('git describe --abbrev=0 --tags');

但是因为我globally require this CLI app with composer,它没有带有源代码的git仓库。

我的下一个想法是我知道我至少可以从作曲家那里得到它

composer global show myname/mypackage

但这会吐出大量信息,而且我知道没有选项只显示版本号。我觉得用正则表达式之类的东西过滤所有这些可能有点过头了。有没有更好的办法?

【问题讨论】:

  • 目标是什么?检测当前运行应用程序的工作目录中存储库的最新版本(按标签)?
  • 是的,那很好,但就像我在问题中提到的那样,通过 composer 安装时没有 git 存储库。
  • 目标是当我标记一个新版本时,我不想记住首先用版本号更新那个硬编码的字符串。
  • 对。您可以每次都从 API 中动态检索它吗?还是有点矫枉过正?

标签: php git symfony composer-php command-line-interface


【解决方案1】:

从某个地方提取版本号可能很困难,因为您可以运行旧版本的应用程序但错误地提取最新版本号。

您可以将“release.version”文件添加到仅包含版本号的存储库中,并读取此文件以将其传递给构造函数。

然后你可以在提交标签之前使用像 pre-commit 这样的 git 钩子来更新这个文件。

但不建议在分布式系统中这样做,因为它可能会导致冲突,但对于较小的团队或有专门的发布管理器的团队来说可能没问题。 在这里阅读:https://wincent.com/blog/automatic-deployment-numbering-in-gitHow do I enable ident string for Git repos?

拥有一个预提交钩子来检查新标签并提醒您增加代码中的版本可能就足够了;)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2011-02-07
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    相关资源
    最近更新 更多