【问题标题】:How to auto-generate a version string in git [duplicate]如何在git中自动生成版本字符串[重复]
【发布时间】:2013-02-03 13:31:23
【问题描述】:

可能重复:
Enable ident string for Git repos

在我的项目中,每个源文件(无论是什么语言 - Java、Python、shell)都有一个注释行,其中包含源代码控制信息 - 分支、上次提交日期、提交者名称等。

这是通过使用由源代码管理应用程序自动替换的特殊占位符(例如 $Branch$)来完成的。

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

我在 Windows 上使用 Git 扩展,在 Linux 上使用尚未确定的 GUI,但我假设两者都只是调用 git 命令行工具的 GUI。

【问题讨论】:

标签: linux git version-control auto-generate


【解决方案1】:

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

要对脚本语言执行此操作,您可以使用 post-commit 和其他钩子。

【讨论】:

  • -1 - 不正确,git 支持占位符,请参阅其他答案。
  • 称“支持占位符”有点牵强。 +1 只是为了反击恕我直言,公开热烈的反对票。
【解决方案2】:

您必须阅读 Git 中的 smudge/clean filters 才能获得关键字替换的一些迭代。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多