Введение
gear (Get Every Archive from git package Repository) - система для работы с произвольными архивами программ. В качестве хранилища данных gear использует git, что позволяет работать с полной историей проекта.
Создание gear-репозитория путём импорта созданного ранее srpm-пакета(ов).
Пусть у нас есть srpm-пакет foobar-1.0-alt1.src.rpm, и, к примеру, в нём находится следующее:
$ rpmquery -pl foobar-1.0-alt1.src.rpm foobar-1-fix.patch foobar-2-fix.patch foobar.icon.png foobar-1.0.tar.bz2 foobar-plugins.tar.gz
Для того чтобы сделать из него gear-репозиторий, нам нужно:
-
Создать каталог, в котором будет располагаться наш архив:
$ mkdir foobar $ cd foobar
-
Создать новый git-репозиторий:
$ git init Initialized empty Git repository in .git/
Получившийся пустой git-репозиторий будет выглядеть примерно следующим образом:
$ ls -dlog .* drwxr-xr-x 4 4096 Aug 12 34:56 . drwxr-xr-x 6 4096 Aug 12 34:56 .. drwxr-xr-x 8 4096 Aug 12 34:56 .git
Таким образом, git-репозиторий готов для импорта srpm-пакета.
-
В проекте gear есть утилита gear-srpmimport, предназначенная для автоматизации импортирования srpm-пакета в git-репозиторий:
$ gear-srpmimport foobar-1.0-alt1.src.rpm Committing initial tree deadbeefdeadbeefdeadbeefdeadbeefdeadbeef gear-srpmimport: Imported foobar-1.0-alt1.src.rpm gear-srpmimport: Created master branch
После выполнения импорта git-репозиторий будет выглядеть примерно следующим образом:
$ ls -Alog drwxr-xr-x 1 4096 Aug 12 34:56 .gear drwxr-xr-x 1 4096 Aug 12 34:56 .git -rw-r--r-- 1 6637 Aug 12 34:56 foobar.spec drwxr-xr-x 3 4096 Aug 12 34:56 foobar drwxr-xr-x 3 4096 Aug 12 34:56 foobar-plugins -rw-r--r-- 1 791 Aug 12 34:56 foobar-1-fix.patch -rw-r--r-- 1 3115 Aug 12 34:56 foobar-2-fix.patch -rw-r--r-- 1 842 Aug 12 34:56 foobar.icon.png
Итак, пакет импортирован в репозиторий. Для импортированного пакета формируется список правил, по которым будет создаваться архив. Правила по умолчанию располагаются в файле .gear/rules:
$ cat .gear/rules copy: *.patch copy: *.png tar.bz2: foobar tar.gz: foobar-plugins name=foobar-plugins base=
Прежние версии gear-srpmimport по умолчанию располагали правила в файле .gear-rules.
-
При необходимости в файл правил можно вносить изменения. Например, можно убрать сжатие исходников (соответствующие изменения следует вносить и в spec-файл).
Создание gear-репозитория на основе готового git-репозитория.
-
Создать и добавить в git-репозиторий spec-файл.
-
Создать и добавить в git-репозиторий файл с правилами .gear/rules.
Сборка пакета из gear-репозитория.
-
Сборка пакета при помощи hasher(7) осуществляется командой gear-hsh:
$ gear-hsh
-
Чтобы собрать старый пакет, который не содержит определения тэга Packager в spec-файле, следует отключить соответствующую проверку:
$ gear-hsh --no-sisyphus-check=gpg,packager
-
Сборка пакета при помощи rpmbuild(8) осуществляется командой gear-rpm:
$ gear-rpm -ba
Фиксация изменений в репозитории.
-
Для того, чтобы сделать commit очередной сборки пакета, имеет смысл воспользоваться утилитой gear-commit, которая помогает сформировать список изменений на основе записи в spec-файле:
$ gear-commit -a
-
Прежде чем сделать первый commit, не забудьте сконфигурировать ваш адрес. Это можно сделать глобально несколькими способами, например, прописав соответствующие значения в ~/.gitconfig:
$ git config --global user.name 'Your Name' $ git config --global user.email '<login>@altlinux.org'
Для отдельно взятого git-репозитория сконфигурировать адрес можно, прописав соответствующие значения в .git/config этого git-репозитория:
$ git config user.name 'Your Name' $ git config user.email '<login>@altlinux.org'