git - 在 rpm 中将最后一个 git commit id 放在哪里

标签 git rpm rpmbuild

我想将最后一个“git commit id”添加到我的 rpm 中,以便有一种万无一失的方法来追踪用于构建包的源。

我可以使用 rpm release 标签,但在快照的情况下,这已经用于发布号和日期。我不想再让它重载。

是否有其他标记或机制将最后一个提交 ID 存储在 rpm 中?

最佳答案

我不知道专门为此设计的规范格式中的任何内容,但我确实看到了几个选项:

  • 使用版本标签
    • 您在问题中提到了 release 标签,但这是针对包版本,而不是软件版本。 Git 修订更像是软件版本,而不是包版本。
    • 对于稳定版本,如果你愿意,你仍然可以使用像 1.0 这样的数字标签,但我建议你确保这对应于具有相同名称的 Git 标签,这样你的版本将始终对 Git 有意义。
    • 这样做意味着您可能还应该使用 serial 标签,这样 RPM 可以确定如何订购版本。 (如果您正确标记并使用以下方法确定您的版本,则可能没有必要。)
    • 这将在您的包名称中或至少在文件名中包含修订,听起来您不希望这样。
  • 使用 Git 哈希命名您的源存档,然后使用 url 标记,例如 http://example.com/software/software-abcd123.zip
    • 使用此方法您不需要在包文件名中包含修订。

在第一种情况下(也可能是第二种情况),可能值得使用 git describe确定您的 Git 感知版本号,例如

$ git describe HEAD
1.0.0-3-gabcd123
'-.-' | |'--.--'
  |   | |   `---- Short Git hash
  |   | `-------- Indicates that a Git hash follows
  |   `---------- Three commits ahead of the previous tag name
  `-------------- The name of the base tag

请注意,您的 RPM 版本 不能包含连字符,因此可能必须将此版本转录为类似 1.0.0_3_gabcd123 的内容。

关于git - 在 rpm 中将最后一个 git commit id 放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23807545/

相关文章:

git - 如何强制 NPM 与 master 从 repo 获取包的最后一次提交?

GitHub 错误消息 - 权限被拒绝(公钥)

linux - 使用 RPM 在嵌入式系统镜像上进行安装

linux - RPM 包中的几个组

php - Capistrano 上传 .git 目录

git - 如何删除在桌面上创建的 git 存储库

java - 具有 Java 版本依赖性的 RPM,yum 似乎认为它可以满足不同的版本

linux - 为什么 repoquery 输出错误的文件列表?

rpm - 构建 rpm 而不编译源文件

rpm - 如何直接在 rpm 规范文件中覆盖 optflags?