Введение

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-репозиторий, нам нужно:

  1. Создать каталог, в котором будет располагаться наш архив:

    $ mkdir foobar
    $ cd foobar
  2. Создать новый 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-пакета.

  3. В проекте 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.

  4. При необходимости в файл правил можно вносить изменения. Например, можно убрать сжатие исходников (соответствующие изменения следует вносить и в spec-файл).

Создание gear-репозитория на основе готового git-репозитория.

  1. Создать и добавить в git-репозиторий spec-файл.

  2. Создать и добавить в git-репозиторий файл с правилами .gear/rules.

Сборка пакета из gear-репозитория.

  1. Сборка пакета при помощи hasher(7) осуществляется командой gear-hsh:

    $ gear-hsh
  2. Чтобы собрать старый пакет, который не содержит определения тэга Packager в spec-файле, следует отключить соответствующую проверку:

    $ gear-hsh --no-sisyphus-check=gpg,packager
  3. Сборка пакета при помощи rpmbuild(8) осуществляется командой gear-rpm:

    $ gear-rpm -ba

Фиксация изменений в репозитории.

  1. Для того, чтобы сделать commit очередной сборки пакета, имеет смысл воспользоваться утилитой gear-commit, которая помогает сформировать список изменений на основе записи в spec-файле:

    $ gear-commit -a
  2. Прежде чем сделать первый 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'