Кто-нибудь использует SCM при настройке исходящих пакетов?
Конечно. Это довольно часто.
Каков наиболее эффективный способ интеграции git в наш рабочий процесс?
Есть ли лучший рабочий процесс, который более благоприятен для контроля версий
пользовательская авторизация RPM?
Я не знаю о наиболее эффективных , но вот что я делаю. Я начинаю с
следующий ~/.rpmmacros
файл:
%_topdir %(echo ${RPM_TOPDIR:-$HOME/redhat})
%_specdir %{_topdir}/PACKAGES/%{name}/%{version}
%_sourcedir %{_topdir}/PACKAGES/%{name}/%{version}/sources
%_rpmdir %{_topdir}/PACKAGES/%{name}/%{version}/rpms
Если я устанавливаю пакет (скажем, foo-1.0-1.src.rpm), файл спецификаций заканчивается в
~/redhat/PACKAGES/foo/1.0/foo.spec
, и архив с исходным кодом (и любой
патчи) в конечном итоге в ~/redhat/PACKAGES/foo/1.0/sources
.
Теперь я инициализирую каталог пакета как репозиторий git:
cd ~/redhat/PACKAGES/foo/1.0
git init
git add foo.spec sources/*.patch
git ci -m 'initial commit'
Нет ничего особенного в записи изменений в файле спецификации:
git ci -m 'made some really spiffy changes' foo.spec
Если мне нужно внести изменения в исходные файлы пакета, я делаю это:
rpmbuild -bp foo.spec
А теперь я создаю временный репозиторий git:
cd ~/redhat/BUILD/foo-1.0
git init
git add .
git ci -m 'initial commit'
git tag upstream
С этого момента, если я сделаю какие-либо изменения, я могу сгенерировать патчи против
исходный пакет вроде этого:
git diff upstream
Или, если я сделал серию коммитов, я могу использовать команду git's format-patch
создать серию патчей:
$ git format-patch upstream
0001-added-text.patch
0002-very-important-fix.patch
И их можно скопировать в соответствующий каталог sources
и добавить
в файл спецификации.
Обратите внимание, что временный git-репозиторий, который я создал для отслеживания изменений в
каталог сборки будет уничтожен при следующем запуске rpmbuild
.