Git

在 RPM 中將 VCS 版本儲存在哪裡?

  • June 26, 2020

我們使用 Git 作為我們的 VCS 和 RPM 進行打包。我想儲存建構包的 Git 雜湊,但我不確定最合適的位置。

RPM有許多可用的標籤,但是我沒有看到任何用於 VCS 版本的標籤(也許看過它?)。

我對添加自定義標籤持懷疑態度,僅查看 50,000 英尺級別。

一種感覺很 hacky 的解決方案是將 Git 雜湊放在描述欄位中。在這一點上,我們沒有將它用於其他任何事情,但是哇,這感覺很難看。

那麼在 RPM 中儲存 VCS 版本最合適的位置是什麼?

Fedora(很少有 RHEL)將此資訊放在 Release 標籤中。

例如:

Name:           mypackage
Version:        0.0.1
Release:        20140114git0abcdef

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 發行版。

引用自:https://serverfault.com/questions/567267