2016-10-25 28 views
3

我正在写一个PHP Symfony Console应用程序,它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 

得到它但这吐出一吨的信息,而且也没有选择,我所知道的,只是显示的版本号。我觉得像使用正则表达式来过滤所有这些可能会矫枉过正。有没有更好的方法?

+0

目的是什么?要检测应用程序正在运行的当前工作目录中存储库的最新版本(通过标记)? –

+0

是的,那很好,但正如我在我的问题中提到的那样,通过作曲者安装时没有git存储库。 –

+0

目标是当我标记一个新版本时,我不想记得先用版本号更新那个硬编码的字符串。 –

回答

3

从什么地方拉版本号可能是困难的,因为你可以运行该应用程序的旧版本,但错误地拉最新的版本号。

你可以添加一个“release.version”文件到您的回购只包含版本号和阅读将它传递给构造函数。

然后你可以使用一个git钩状预提交你提交一个标签之前更新此文件。

然而,这是不是在分布式系统推荐,因为它可能会导致collisons,但对于小团队或团队提供了专门的发行经理也可能是好的。 在这里阅读:https://wincent.com/blog/automatic-deployment-numbering-in-gitHow do I enable ident string for Git repos?

这将可能是足有一个pre-commit钩子,用来检查一个新的标签,只是提醒你在代码中增加版本)。