我正在编写一个Symfony Console PHP应用程序takes a version number in the constructor。
$app = new Application('myapp', '1.0');
我已经发现在制作新的git标签时很容易忘记版本号。如何动态/自动执行此操作?
除了SO,我searched packagist非常深刻,因为我认为这是一件很平常的事情,但却无法发现任何事情。
我起初想过编写一个可以做这样的事情的函数:
chdir(__DIR__);
shell_exec('git describe --abbrev=0 --tags');
但是因为我globally require this CLI app with composer,它没有包含源代码的git存储库。
我的下一个想法是,我知道我至少可以从作曲家那里得到它
composer global show myname/mypackage
但这会泄漏大量信息,而且我不知道只显示版本号。我觉得像使用正则表达式这样的东西过滤所有这些可能会有点过分。还有更好的办法吗?
答案 0 :(得分:3)
从某个地方提取版本号可能很困难,因为您可以运行较旧版本的应用程序但错误地提取最新版本号。
您可以添加" release.version"将文件发送到只包含版本号的repo,并将其读取以将其传递给构造函数。
然后,您可以在提交标记之前使用像pre-commit这样的git钩子来更新此文件。
然而,这不建议在分布式系统中使用,因为它可能导致collisons,但对于拥有专用发布管理器的小型团队或团队而言,它可能没问题。 在这里阅读:https://wincent.com/blog/automatic-deployment-numbering-in-git 和How do I enable ident string for Git repos?
使用预提交钩子来检查新标签并提醒您增加代码中的版本可能就足够了。)。