quickshiftin Asked: 2014-01-15 13:23:54 +0800 CST2014-01-15 13:23:54 +0800 CST 2014-01-15 13:23:54 +0800 CST 在 RPM 中将 VCS 版本存储在哪里? 772 我们使用 Git 作为我们的 VCS 和 RPM 进行打包。我想存储构建包的 Git 哈希,但我不确定最合适的位置。 RPM有许多可用的标签,但是我没有看到任何用于 VCS 版本的标签(也许看过它?)。 我对添加自定义标签持怀疑态度,仅查看 50,000 英尺级别。 一种感觉很 hacky 的解决方案是将 Git 哈希放在描述字段中。在这一点上,我们没有将它用于其他任何事情,但是哇,这感觉很难看。 那么在 RPM 中存储 VCS 版本最合适的位置是什么? git 2 个回答 Voted Best Answer Michael Hampton 2014-01-15T13:28:24+08:002014-01-15T13:28:24+08:00 Fedora(很少有 RHEL)将此信息放在 Release 标签中。 例如: Name: mypackage Version: 0.0.1 Release: 20140114git0abcdef Craig Ringer 2020-06-26T18:09:18+08:002020-06-26T18:09:18+08:00 RPM 实际上有一个记录不充分的VCS标签。 它似乎没有任何关于其使用的指南,但它存在并且受到支持。 cat > test.spec <<'__END__' Name: foo Version: 1 Summary: foo License: None Release: 1 VCS: git:repo=my-repo:branch=my-branch:sha=1234deadbeef %description foo __END__ $ rpmspec -q test.spec --qf "%{VCS}\n" git:repo=my-repo:branch=my-branch:sha=1234deadbeef 它似乎仅限于单个解析令牌。还是有用的。我没有找到任何关于它的定义明确的格式或结构的文档,并且它的采用是有限的。在我的 Fedora 32 系统上,我发现了两个使用它的包,格式不同: $ rpm -qa --qf '%{Name} %{VCS}\n' |grep -v '(none)' bcache-tools https://github.com/g2p/bcache-tools.git libcue scm:git:https://github.com/lipnitsk/libcue.git $ 坦率地说,rpm 并没有给我们注入自定义标签信息的能力,这是一个真正的耻辱。我想记录 Jenkins 构建 ID 和作业名称、git 提交哈希和 git 分支或标记,但并不真的希望它们出现在更改日志中。 我可以在带有X-BS-foo标签的 debs 中做到这一点。 您可以使用 . 查看允许的 rpm 标签列表rpm --querytags。 该DISTURL标签似乎是为其他用途而保留的,但可能是候选者。 还有URL; 您可以选择在其中嵌入 SCM 信息,并在浏览器访问时将 URL 重定向到合理的位置。 您可能会看到对支持自定义标签的“rpm5”的引用。这似乎是 rpm 的死叉,而不是大多数主要发行版上使用的 rpm.org 发行版。
Fedora(很少有 RHEL)将此信息放在 Release 标签中。
例如:
RPM 实际上有一个记录不充分的
VCS
标签。它似乎没有任何关于其使用的指南,但它存在并且受到支持。
它似乎仅限于单个解析令牌。还是有用的。我没有找到任何关于它的定义明确的格式或结构的文档,并且它的采用是有限的。在我的 Fedora 32 系统上,我发现了两个使用它的包,格式不同:
坦率地说,rpm 并没有给我们注入自定义标签信息的能力,这是一个真正的耻辱。我想记录 Jenkins 构建 ID 和作业名称、git 提交哈希和 git 分支或标记,但并不真的希望它们出现在更改日志中。
我可以在带有
X-BS-foo
标签的 debs 中做到这一点。您可以使用 . 查看允许的 rpm 标签列表
rpm --querytags
。该
DISTURL
标签似乎是为其他用途而保留的,但可能是候选者。还有
URL
; 您可以选择在其中嵌入 SCM 信息,并在浏览器访问时将 URL 重定向到合理的位置。您可能会看到对支持自定义标签的“rpm5”的引用。这似乎是 rpm 的死叉,而不是大多数主要发行版上使用的 rpm.org 发行版。