1

当我们对 git 进行提交时,是否可以让 git 创建一个包含 git 修订号的文件?

我们需要能够从我们的生产环境中获取 git 版本号。但是,在我们的生产环境中,我们无法访问 .git 目录,因此我们需要另一种方法来尝试能够获取服务器上运行的代码的当前版本。我们正在使用弹性豆茎。它们基本上允许我们的生产环境从我们的 git 存储库启动,但它不包括任何 .git 目录。

4

1 回答 1

3

这是不可能的,因为提交 ID(Git 唯一拥有的就是各种修订 ID,尽管还有一些更易于阅读的输出git describe要求标签存在于您的存储库中的正确位置)取决于关于提交的内容。如果您根据当前内容计算提交 ID,然后将其插入,则内容会更改,因此提交 ID 现在与您计算的不同。

一般来说,要走的路是在另一个地方生成提交ID,例如,同时使代码可用于将其上传到生产环境的任何东西。在构建过程中也需要同样的事情,在这些过程中,通常是这样的:

  1. 获取当前提交的 ID(例如git rev-parse HEAD)并将其写入文件。在 C 项目中,这可能是一个头文件。
  2. 在构建过程中使用该文件,例如通过#include在源文件中使用它。

同样,对于代码的部署,您可能只需让推送代码的作业创建一个包含提交 ID 的额外文件(与其余文件一起推送)。

于 2013-11-11T16:58:16.523 回答