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

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

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

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

我很懷疑新增自訂標籤,僅看 50,000 英尺高度。

一種感覺相當 hacky 的解決方案是將 Git 哈希值放入描述場地。目前我們還沒有將它用於其他任何用途,但是哇,這感覺很醜陋。

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

答案1

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

例如:

Name:           mypackage
Version:        0.0.1
Release:        20140114git0abcdef

答案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 標記中(儘管我還沒有測試過)。

相關內容