答案1
答案2
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 发行版。
答案3
我认为没有什么可以阻止您将所有必需信息存储在 docs 目录中的 VERSION 文件中。该文件的路径可以添加到 VCS 标记中(尽管我还没有测试过)。