如何将版本信息添加到作为 ZIP 存档分发的 git 存储库?

How to add version information to a git repository which is distributed as ZIP archive?

我正在寻找将版本信息添加到 ZIP 存档内容的最佳实践,该存档目前由 bitbucket 从 git 存储库创建(HEAD 的状态;git 相关文件会自动删除)。

ZIP 包含顶级目录名称中的 git 提交散列。但是,ZIP 的用户在解压缩后需要重命名目录,并且可能会这样做,即使他们不需要这样做,因此版本信息会丢失。

如果没有 bitbucket 插件,最简单的方法是使用 Jenkins 自动进行版本控制。它试图解决这个问题,但我陷入了逻辑循环,即每次提交都会创建一个新版本,该版本会在版本文件中创建一个更改,该版本文件会创建一个新提交,该新提交会创建一个更改...

如果 zip 存档文件名已经包含相关信息,您需要一个脚本来:

  • 记住那个提交名称
  • 解压缩存档
  • 重命名根文件夹
  • 添加一个包含提交名称的文本文件

这是假设 Bitbucket 生成的存档不包含存储库的完整历史,而只包含 HEAD 内容。

我认为 Exporting Your Repository 部分可能是您要查找的内容。

只需在该顶级文件中更改您需要的任何内容即可,即您的 LAST_COMMIT 文件中只会包含提交哈希。

$Format:%H

您的 .gitattributes 文件将完全相同:

LAST_COMMIT export-subst

git-archive 有一个 --remote 标志,如果您想一次完成所有操作,但我以前没有使用过。

https://git-scm.com/docs/git-archive#Documentation/git-archive.txt---remoteltrepogt