在rpm中放置最后一个git提交ID的位置在哪里?

7
我想在我的rpm中添加最后一个“git commit id”,以确保能够追溯到构建软件包所使用的源代码。我可以使用rpm的release标签,但这已经用于发布号和快照日期。我不想再过载它。是否有另一种标签或机制来存储最后一个提交ID到rpm中?

您需要通过 rpmyum 命令使其对用户可用,还是只是想让打包者知道他们使用了哪些源? - Chris
我希望能够通过rpmyum命令来实现,但是作为一个标签。在rpm名称中编码会很丑陋。 - mirk
1个回答

10

对于这个问题,我不知道Spec格式中是否有特别设计的内容,但我看到了几个选项:

  • 使用 version 标记
    • 你在问题中提到了 release 标记,但它是用于包版本,而非软件版本。Git 修订版本更像是软件版本而不是包版本。
    • 对于稳定版,如果需要仍可使用数字标记,例如 1.0,但建议你确保这与相同名称的 Git 标记相对应,这样你的版本始终对 Git 有意义。
    • 这样做意味着你可能还要使用 serial 标记,以便 RPM 可以确定如何排序版本。(如果您正确使用标记并使用下面的方法确定版本,则可能不需要这样做。)
    • 这将在你的软件包名称(或至少是文件名)中包含修订版本,似乎你不想要这个。
  • 使用 Git 哈希值为源代码存档命名,然后使用类似 http://example.com/software/software-abcd123.zipurl 标记。
    • 使用此方法,您无需在软件包文件名中包含修订版本。

在第一种情况(可能也包括第二种情况)下,使用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 的东西。


请注意,在新版本的RPM中,“serial”已被重命名为“epoch”... - Garrett Motzner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接