Gear/tags

Материал из ALT Linux Wiki
< Gear
Версия от 16:05, 28 июля 2008; VladimirKamarzin (обсуждение | вклад) (Import from freesource.info)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Использование .gear-tags

Цель использования gear-tags - получить в .src.rpm-е тарбол оригинальных сырцов + кумулятивный патч наших изменений.

Структура репозитория должна быть примерно такой:

  • upstream - сюда импортятся оригинальные тарболы один за другим, при этом проставляются таги с именем "vверсия", т.е. v1.0, v2.0, v3.0 и т.д
  • master - это наш рабочий бранч, тут мы храним спек, дополнительные sources и изменённые исходники. На каждый релиз пакета проставляются таги вида %version-%release, т.е. 1.0-alt1, 1.0-alt2, 1.0-alt3 и т.д.

master и upstream связаны следующим образом: когда-то, сразу после прикладывания патчей (версия нашего проекта foo совпадает в master и upstream) для создания общего base, в бранче master был выполнен

git pull -s ours . upstream

В дальнейшем, при обновлении версии, производится

git pull . upstream

При этом все наши интегрированные патчи, спек, sources - сохраняются. Если возникает конфликт, git об этом напишет, остаётся лишь устранить его.

Для реализации поставленной задачи необходимо несколько вникнуть в применение директив файла .gear-rules, и соответствующим образом его модифицировать. Найти информацию можно в заголовке /usr/bin/gear или в man-странице gear-rules(5) Итак, нам необходимо, чтобы в тарбол помещалось оригинальное дерево исходников:

tar: v@version@:foo

В данном случае мы говорим, что tar-файл необходимо завернуть директорию foo, которая должна быть взята из тага v@version@. Так же можно использовать не таг, а непосредственно идентификатор коммита (sha1 хэш) @version@ - это тот Version, что прописан в спеке.

Теперь нужно сделать кумулятивный diff:

diff: v@version@:foo foo

Здесь тоже всё просто - делается diff между директорией foo тага v@version@ и директорий foo из текущего бранча (master). Имя diff-а по умолчанию %name-%version-%release.patch.

Осталось сформировать список тагов, с которыми должен работать gear. Для этого предназначена специальная утилита gear-update-tag(1)

gear-update-tag  -ac

И не забыть закоммитить:

git commit -a -m 'Switched to use .gear-tags'