Мы используем Git в качестве нашей VCS и RPM для упаковки. Я хотел бы сохранить хэш Git, из которого был создан пакет, но я не уверен в наиболее подходящем месте.
Есть ряд теги доступны для RPM, однако я не вижу их для версии VCS (может быть, просмотрел?).
Я довольно подозрительно отношусь к добавление собственного тега, просто глядя на уровень 50 000 футов.
Одно из решений, которое кажется довольно хакерским, - это поместить хеш Git в описание поле. На данный момент мы не используем его ни для чего другого, но вау, это просто ужасно.
Итак, где лучше всего хранить версию VCS в RPM?
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 и имя задания, хеш фиксации git и ветку или тег git, но на самом деле не хочу, чтобы они в журнале изменений.
Я могу сделать это в дебюте с X-BS-foo
теги.
Вы можете увидеть список разрешенных тегов rpm с помощью rpm --querytags
.
В DISTURL
тег выглядит зарезервировано для другого использования но мог быть кандидатом.
Есть также URL
; вы можете включить туда информацию SCM и иметь перенаправление, которое приведет URL-адрес в разумное место при посещении браузером.
Вы можете увидеть ссылки на "rpm5", поддерживающий настраиваемые теги. Похоже, это мертвый форк rpm, а не дистрибутив rpm.org, используемый в большинстве основных дистрибутивов.