2014-02-18 29 views
1

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

回答

1

你可以设置一个post-commit钩子调用一个python脚本像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>更新项目的版本信息模板,然后重新生成项目,以反映版本更改
  • 任何其他手动看家的中间版本现在可以进行
  • 你现在对下一个版本的工作,重复时发布时间再次来到

,可帮助您生成正确的元数据信息的文件(如从派生版本pp最后一个标签),供您在构建过程中使用。

+0

感谢传播我的工作! – Manuel

+0

@曼努埃尔没问题,并感谢你的脚本。我编辑了答案,以便更好地显示正确的归属。 – VonC

1
  1. 混帐不支持扩展的“关键词” - 这是Linus的政策

在一切我所看到的关于Git的,它不会改变你的源代码的单个位

错了。它可以做到这一点 - “文本规范化”的跨平台使用是很大git的头痛

重点是,我想在我的应用程序中显示当前版本的对话框。

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

  • 临:简单
  • 魂斗罗:在构建过程中添加额外的复杂度

另一种实现是“涂抹|干净过滤器”:关键字,作为静态文本存储ñ库,转换为在工作目录动态变化的元素(真 - 与过滤器程序执行此双向化改造)

  • 临:透明度(你有仓库都已经内源)
  • 魂斗罗:小可移植性(过滤器的行为必须在每个工作场所可用),转换规则的可能的复杂性
0

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

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

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

相关问题