如何在git中自动生成版本字符串

Ami*_*r K 4 linux git version-control auto-generate

可能重复:
为Git repos启用ident字符串

在我的项目中,每个源文件(不管语言 - Java,Python,shell)都有一个注释行,其中包含源控制信息 - 分支,最后提交日期,提交者名称等.

这是通过使用由源控件应用程序自动替换的特殊占位符(例如$ Branch $)来完成的.

是否有可能在git中实现类似的功能?

我在Windows上使用Git Extensions,在Linux上使用尚未决定的GUI,但我认为两者都只是调用git命令行工具的GUI.

Jos*_*ner 5

Git没有对这些占位符的支持,也许永远不会有.

相反,自动生成包含git describe命令输出的源文件,并在编译应用程序时包含它.或者您可以生成一些配置文件(JSON或任何您想要的).

要使用版本信息生成C++标头,请使用这样的shell脚本(您可以将这些命令直接添加到您的makefile):

(
  echo '/* Generated file, do not edit. */'
  echo  '#define APP_VERSION "'`git describe`'"'
  echo  '#define APP_VERSION_DATE "'`git log -n 1 --format=%ai`'"'
) > version.h
Run Code Online (Sandbox Code Playgroud)

要为脚本语言执行此操作,您可以使用post-commit和其他挂钩.

  • 称“支持占位符”有点困难。+1只是为了反驳恕我直言的过度狂热的低票。 (2认同)

Laz*_*ger 5

您必须阅读Git 中的涂抹/清理过滤器,才能获得关键字替换的一些迭代。

Grok 部分“关键字扩展”,其中解释了扩展 $DATE$ 关键字的示例(以及必须反向操作)。在您的情况下,将 $SOMEKEYWORD$ 扩展为版本字符串的大部分工作都可以在git describe幕后执行,干净的部分必须手动实现(您的手)