我以前的一位雇主在构建可执行文件后,将当前提交的 GIT 哈希添加到可执行文件的文件属性的“详细信息”选项卡中。
正如我在here中发现的那样,此命令给出了当前提交哈希:
git rev-parse --short HEAD
但是有人知道如何将其添加到文件属性的“详细信息”选项卡中吗?
编辑此问题的后续内容:
这个问题是在我不知道如何开始的时候写的,有一些通用的答案。后来我决定走
GitVersion
的工作方式。我对此也有一些疑问,这些问题在此后续问题中处理。
注意:我假设您正在开发一个 .NET 项目。还有其他方法可以在构建时为其他项目提供类似的信息(例如:我发现这个问题提到了为 C++ 项目提供两种方法)
您可以在构建时在程序集上设置许多属性,例如版本。
AssemblyInformationalVersionAttribute
,可以是任何字符串。
(请参阅 docs.microsoft 页面了解装配属性)
您可以在项目代码中设置它,例如,在
.cs
文件中,您可以添加 :
[assembly:AssemblyInformationalVersionAttribute("That's my version all right")]
注入提交哈希的一种方法是:
[assembly:AssemblyInformationalVersionAttribute("#GIT_COMMIT_PLACEHOLDER#")]
有一些工具可以将其与更完整的功能结合在一起。
例如,我听说过 Gitversion (https://gitversion.net/docs/),它集成在 Azure Devops 管道和 MSbuild 任务中,并提供一系列选项来从 git 将版本信息添加到构建中(例如:从标签中读取版本号,添加commit sha等...)
这确实是一个 Windows 构建问题(并且很可能是特定于构建环境的)。例如,在 macOS 上的 Xcode 中执行此操作的方法将完全不同。
在 Git 方面(因为你已经用 git 标记了它),要说的一件事是,与其坚持
git rev-parse --short HEAD
的输出,不如坚持 git describe
的输出可能更明智。 ,也许带有 --tags
和/或 --always
和/或 --dirty
标志:
annotation=$(git describe --always --dirty)
例如。这样,假设您很好地设置了发布标签,那么 release build 将被标记为release tag。有关详细信息,请参阅
git describe
文档。