Git
在 RPM 中將 VCS 版本儲存在哪裡?
我們使用 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 發行版。