UsesGear
Git + RPM = Gear
Gear-оводство
Отслеживание процесса создания RPM-пакетов всегда оставался за некоторой завесой. Результаты есть, а процесс не виден. Прошло немало времени с тех пор, как стали публиковаться SVN-репозитории различных дистрибутивов. Тем не менее воспользоваться этими репозиториями без возможности продолжить, пусть даже локально, работу над пакетом в собственной ветке, до повсеместного распространения распределённых систем контроля версий было нельзя. А это значит, что разработчик не вникает в процесс работы с помощью тех же средств, которыми пользовался исходный разработчик пакета. С введением Gear, представляющего собой Git-репозиторий, распакованного SRPM-пакета, это стало возможным.
Что представляет собой Gear? Gear-репозиторий - это Git-репозиторий, который который содержит SPEC-файл, файлы исходников (обычно распакованные) и правила получения из хранящихся в репозитории файлов, содержимого исходных файлов (SOURCES) для RPM. В этом плане есть идея кроме всего прочего хранить там дополнительно файлы для сборки под Debian/Ubuntu. И это не сложно. Сложнее научиться правильно интерпретировать эти файлы. Сейчас, кроме всего прочего, Gear представляет набор скриптов для получения сборочного дерева и запуска сборки в этом дереве с помощью Rpmbuild или Hasher. Для Debian таких средств по нет.
Для создания Gear-репозитоия проще всего воспользоваться скриптом gear-srpmimport, который автоматически создаст шаблон файла .gear/rules (чуть ранее это был файл .gear-rules), скопирует исходники, сделает первый коммит и первый таг. Далее для работы можно использовать стандартные команды gear --rpmbuild -- rpm -ba или gear --hasher - hsh /hasher_directory или команды из набора etersoft-build-utils - rpmbs file.spec и rpmbsh file.spec.
Разделяемый репозиторий
Для обеспечения работы разных пользователей с одним репозиторием нужно выполнить следующее:
- Создать на сервере группу, в которую включить всех пользователей, имеющих доступ
- Установить эту группу на каталог репозитория рекурсивно
- Установить SGID бит на все каталоги репозитория на сервере
- Дописать в repopsitory.git/config в секцию core параметры sharedRepository = umask, чтобы файлы создавались согласно umask, и filemode = true (контроль прав).
- Если репозиторий большой, в секцию girar стоит дописать repack = false
проверить, что umask находится в значении 0002 (не работает!)