【问题标题】:Can I have GIT create a file with the current revision number on a commit?我可以让 GIT 在提交时创建一个具有当前修订号的文件吗?
【发布时间】:2013-11-23 13:37:23
【问题描述】:

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

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

【问题讨论】:

    标签: git amazon-elastic-beanstalk


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 正确 - 构建系统应该负责从 git 获取此信息。例如,在 Java jar 中,清单文件可以轻松包含有关 jar 的所有必要信息、构建它的提交 ID、是否有任何工作目录更改(工作目录是否干净)、它在哪里编译等。它还应该标记代码这样每个人都可以在 repo 中看到最后发布的状态。
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 2011-09-15
    • 2015-11-25
    • 2021-03-23
    • 2010-09-10
    • 1970-01-01
    • 2023-04-10
    • 2021-12-04
    相关资源
    最近更新 更多