我似乎记得在另一个修订管理系统中看到您可以在代码中放置一个复杂的魔术字符串,修订管理系统会自动用版本字符串替换该模式。 关键是我想在我的应用程序中显示一个显示当前版本的对话框。在我看到的关于Git的所有内容中,它并没有改变你的一点来源。另一个想法是git创建一个源可以读取的单个文本文件 显示版本。 我不喜欢不得不调用Git并手动将标签复制到我的代码中。
答案 0 :(得分:1)
您可以设置一个调用python脚本的post-commit钩子,如manuelbua/gitver
(来自Manuel Bua,还有on Stack Overflow)。
目标:
我希望版本字符串和/或其他有用的信息能够自动嵌入到应用程序代码中,“编译”可以这么说,而不必每次都记得手动执行。
工作流:
- 您正在使用您的存储库,现在您已准备好将当前版本升级到下一版本
- 创建发布代码
git tag -a v0.0.2 -m 'Bump version'
- 通过运行
来定义您的NEXT
gitver next 0.0.3
版本,即您要努力的版本- 运行
gitver
并检查一切正常- 可选:运行
gitver preview <template name>
或gitver update <template name>
预览或更新项目的版本信息模板,然后重建项目以反映版本更改- 现在可以执行任何其他手动内置管理版本
- 现在您正在努力实施NEXT版本,在发布时间再次出现时重复
这有助于您生成具有正确元数据信息的文件(例如从应用最后标记派生的版本),供您在构建期间使用。
答案 1 :(得分:1)
在我看到的关于Git的所有内容中,它并没有改变你的一点点来源
错误。它可以并且它做到了 - 跨平台使用的“文本规范化”是一个很大的问题
关键是我想在我的应用程序中显示一个关于对话框,显示当前版本。
在引擎盖下,它几乎总是git describe
输出,您可以在工作目录上使用哪个命令(在构建阶段上),稍后存储和使用
另一个实现是“涂抹|清理过滤器”:关键字,存储为存储库中的静态文本,转换为工作目录中的动态变化元素(真正 - 与过滤器程序相关执行此双向变换)
答案 2 :(得分:0)
我只是向OS / Git询问标签信息。这是我的版本视图(php):
<?php
$output = [];
exec("git tag", $output);
$version = end($output);
?>
{{$version}}
这样我只将版本存储在一个地方。