我的应用程序可以知道它的Git标签吗?

时间:2014-02-18 13:19:06

标签: git tags

我似乎记得在另一个修订管理系统中看到您可以在代码中放置一个复杂的魔术字符串,修订管理系统会自动用版本字符串替换该模式。 关键是我想在我的应用程序中显示一个显示当前版本的对话框。在我看到的关于Git的所有内容中,它并没有改变你的一点来源。另一个想法是git创建一个源可以读取的单个文本文件 显示版本。 我不喜欢不得不调用Git并手动将标签复制到我的代码中。

3 个答案:

答案 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)

  1. Git不支持可扩展的“关键字” - 这是Linus的政策
  2.   

    在我看到的关于Git的所有内容中,它并没有改变你的一点点来源

    错误。它可以并且它做到了 - 跨平台使用的“文本规范化”是一个很大的问题

      

    关键是我想在我的应用程序中显示一个关于对话框,显示当前版本。

    在引擎盖下,它几乎总是git describe输出,您可以在工作目录上使用哪个命令(在构建阶段上),稍后存储和使用

    • Pro:简单
    • Contra:在构建过程中增加额外的复杂性

    另一个实现是“涂抹|清理过滤器”:关键字,存储为存储库中的静态文本,转换为工作目录中的动态变化元素(真正 - 与过滤器程序相关执行此双向变换)

    • Pro:透明度(您已将所有内容都存储在存储库中)
    • Contra:较小的可移植性(必须在每个工作场所提供过滤器的操作),转换规则可能的复杂性

答案 2 :(得分:0)

我只是向OS / Git询问标签信息。这是我的版本视图(php):

<?php
$output = [];
exec("git tag", $output);
$version = end($output);
?>
{{$version}}

这样我只将版本存储在一个地方。