我可以让GIT在提交时创建一个包含当前修订号的文件吗?

时间:2013-11-11 16:51:02

标签: git elastic-beanstalk

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

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

1 个答案:

答案 0 :(得分:3)

这是不可能的,因为提交ID(Git唯一拥有的是排序的修订ID,尽管还有一些更容易阅读的git describe输出需要标签存在于你的回购在正确的地方)取决于提交的内容。如果您根据当前内容计算提交ID然后插入它,则内容会更改,因此提交ID现在与您计算的提交ID不同。

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

  1. 获取当前提交的ID(例如git rev-parse HEAD)并将其写入文件。在C项目中,这可能是一个头文件。
  2. 在构建过程中使用该文件,例如通过#include将其添加到源文件中。
  3. 同样,对于代码的部署,您可能只需要推送代码的作业创建一个包含提交ID的额外文件(与其他文件一起推送)。