Как я могу использовать git для отслеживания настроек SRPM?

Наша команда часто выполняет настройку различных пакетов, распространяемых с RHEL / CentOS. Наш рабочий процесс включает в себя установку SRPM, выполнение rpmbuild -bp для распаковки и исправления исходного кода, внесение наших изменений и создание .patch для включения в specfile, а также создание нового настроенного SRPM для последующего использования с mock :

$ rpm -i grub-0.97-13.5.1.src.rpm
$ rpmbuild -bp rpmbuild/SPECS/grub.spec
$ cp -a rpmbuild/BUILD/grub-0.97 grub-0.97.orig
$ cd rpmbuild/BUILD/grub-0.97
  # Make modifications, generate .patch against ".orig" copy
$ vim rpmbuild/SPECS/grub.spec
  # Add custom .patch to specfile, update version, etc
$ rpmbuild -bs rpmbuild/SPECS/grub.spec
$ mock -r default-x86_64.cfg rpmbuild/SRPMS/grub-0.97-13.5.1.custom-1.src.rpm

Этот процесс работает хорошо, но в настоящее время мы не используем какую-либо форму управления версиями для отслеживания наших модификаций и изменений в спецификациях. Основываясь на моем (по общему признанию базовом) понимании git, я думаю, что можно будет внедрить его в этот рабочий процесс и использовать часть его возможностей для оптимизации нескольких шагов (в дополнение к обычным преимуществам SCM).

Например, вместо того, чтобы создавать копию исходного кода для diff для более поздних версий, мы могли бы создать начальную фиксацию исправленного исходного кода восходящего потока и затем внести наши изменения. Когда будете готовы, используйте git format-patch , чтобы создать наш патч функции и добавить его в specfile.

Я также хотел бы контролировать версии файлов спецификаций, хотя я не уверен, как лучше всего этого добиться.


Итак, у меня тройной вопрос:

  1. Использует ли кто-нибудь SCM при настройке исходных пакетов?
  2. Каков наиболее эффективный способ интеграции git в наш рабочий процесс?
  3. Есть ли лучший рабочий процесс, который больше способствует созданию настраиваемого RPM с контролем версий?

Дополнительная благодарность: Предполагая, что рабочий процесс основан на git, как я могу структурировать центральный репозиторий для приема push-уведомлений? Одно репо с подмодулями? Одно репо на пакет?

6
задан Justin ᚅᚔᚈᚄᚒᚔ 23 September 2011 в 22:42
поделиться