[docs] сценарии работы с gear/git для чайников - часть1 (gear-srpmimport)

Artem Zolochevskiy az на zolochevskie.net
Пт Ноя 24 14:12:34 MSK 2006


В сообщении от 24 ноября 2006 12:55 Kirill Maslinsky написал(a):
> > Помогайте, что где не так/не совсем так/совсем не так
> >
> > Итак что хотим. Хотим показать как сделать gear репозиторий и сделать в
> > нём новую/исправленную версию пакета дабы она оказалсь в Сизифе
> >
> > Поехали...
> >
> > для описанного ниже понадобятся: git, gear, hasher
> > так что сперва:
> > # apt-get install git gear hasher
>
> Может неявное требование -- объем доступа к архиву Сизифа
> тоже прописать?

согласен

> Лучше обозначить этот сценарий как
> "Пакет был в Сизифе, но отсутствует в git.alt"

согласен

> > gear репозиторий на основе имеющихся в Сизифе srpm-ов (для чайников)
> > ===================================================
>
> gear-репозиторий и git-репозиторий и т. п. пишется все-таки через дефис
>
> > (не примере пакета joe. конечная цель всего лишь добавить русский
> > Summary)
> >
> > 1. смотрим в архив Сизифа, вытаскиваем все имеющиеся srpm-ы
> > $ lftp -c cat
> > ftp://ftp.altlinux.ru/pub/distributions/archive/Sisyphus/index/joe
> > 2003/11/14/files/SRPMS/joe-2.9.8-alt0.2pre1.src.rpm
> > 2004/04/28/files/SRPMS/joe-3.0-alt1.src.rpm
> > 2004/05/14/files/SRPMS/joe-3.0-alt2.src.rpm
> > 2005/02/16/files/SRPMS/joe-3.1-alt1.src.rpm
> > 2005/03/24/files/SRPMS/joe-3.2-alt1.src.rpm
> > 2005/06/08/files/SRPMS/joe-3.3-alt1.src.rpm
> > 2006/06/15/files/SRPMS/joe-3.4-alt1.src.rpm
> > 2006/08/05/files/SRPMS/joe-3.5-alt1.src.rpm
> >
> > загружаем все эти srpm-ы. - подскажите как это лучше /проще сделать.
>
> может, так:
>
> $ lftp -c cat
> ftp://ftp.altlinux.ru/pub/distributions/archive/Sisyphus/index/joe | wget
> -i - --base=ftp://ftp.altlinux.ru/pub/distributions/archive/Sisyphus/
>
> Или лучше даже так:
>
> $ export
> FTPARCHIVE=ftp://ftp.altlinux.ru/pub/distributions/archive/Sisyphus $ lftp
> -c cat $FTPARCHIVE/index/joe | wget -i - --base=$FTPARCHIVE
>
> > 2. создаем катаклог для будущего gear репозитория, и в нём
> > git-репозиторий $ mkdir joe
> > $ cd joe
> > $ git-init-db
> > defaulting to local storage area
> >
> > 3. импортируем скачанные srpm-ы
> > а) можно руками
> > $ gear-srpmimport ../joe-2.9.8-alt0.2pre1.src.rpm
> > итд по порядку - от младших версий к старшим
> > б) можно воспользоваться index файлом
> > (ftp://ftp.altlinux.ru/pub/distributions/archive/Sisyphus/index/joe),
> > который содержит отсортированный список srpm-ов который подаётся на
> > gear-rspmimport  --stdin
> > $ lftp -c cat
> > ftp://ftp.altlinux.ru/pub/distributions/archive/Sisyphus/index/joe |
> > sed 's/.*\//\.\.\//' | gear-srpmimport --stdin
>
> Может, лучше в примерах сначала создавать рабочий подкаталог, потом туда
> скачивать все srpm-ы, потом прямо в нем делать git-репозиторий и
> импортировать?
>
> А то про sed не все поймут и не у всех это сработает.

согласен

> > 4. В итоге имеем готовый gear репозиторий. gear-rules при использовании
> > gear-srpmimport создается автоматом
> > $ ls -AgG
> > итого 40
> > -rw-r--r-- 1   94 Ноя 24 11:02 .gear-rules
> > drwxr-xr-x 8 4096 Ноя 24 11:02 .git
> > drwxr-xr-x 8 4096 Ноя 24 11:02 joe
> > -rw-r--r-- 1  317 Ноя 24 11:02 joe-3.0-yuk-c-color.patch
> > -rw-r--r-- 1 2189 Ноя 24 11:02 joe-3.5-joerc.patch
> > -rw-r--r-- 1  382 Ноя 24 11:02 joe.desktop
> > drwxr-xr-x 2 4096 Ноя 24 11:02 joe_icons
> > -rw-r--r-- 1 2906 Ноя 24 11:02 joe.png
> > -rw-r--r-- 1 5962 Ноя 24 11:02 joe.spec
> >
> > $ cat .gear-rules
> > copy: *.desktop
> > copy: *.patch
> > copy: *.png
> > tar.gz: joe
> > tar.bz2: joe_icons name=joe_icons base=
>
> Растолкование смысла этого .gear-rules надо привести обязательно с
> отсылками к тому, что мы видим в рабочем каталоге и в спеке.

ок. будем улучшать

> > 5. Начинаем работать с только что созданным gear репозиторием. Правим
> > спек $ vim joe.spec
> > добавляем строчку
> > Summary(ru_RU.UTF-8): Простой в использовании текстовый редактор
> >
> > изменения необходимо зафиксировать (сделать commit)
> > $ git-commit -a -m"Added russain Summary to spec"
>
> Лучше не делать в примерах -a -m, а то у них может закомиттиться чего
> лишнего? Или не хочется объяснять, что там такое будет писать git при
> комитте?

думаю что для примеров это хорошо. хотя надо подумать обсудить. а то vim 
blabla тоже не очень смотрится.

> Может, стоит ввести в примерах где-то git diff, чтобы посмотреть, какие
> изменения и в каком комитте (еще раз привлечь внимание к тому, что
> изменения должны находиться в репозитории).

Да, акцент на это обязательно сделаю, чтоб не пытаться собирать пакеты из 
незакоммитченных препозиториев

> > убедимся что наше изменение сохранилось в истории
> > $ git-log
> >
> > 6. Как и подобает после внесения изменений с spec проверяем собирается ли
> > наш пакет ;-) . Ну и как и полагается проверяем собираемость в hasher $
> > gear --hasher -- hsh ~/HASHER
> >
> > 7. Пока шла сборка пакета, понимаем/вспоминаем, что забыли в spec
> > дописать changelog и увеличить версию. Так что
> > $ vim joe.spec
> > меняем Release: alt1 на Release: alt2
>
> Надо ли включать забывчивость в типовой сценарий? Он все-таки будет служить
> примером для многих и должен быть "идеальным"...

Уверен, что надо. По карайней мере мне такие приёмы всегда нравились. И они 
позволяют показать кое-какие ньюансы. Хотя конкретно здесь может это и 
лишнее.

> > добавляем changelog в spec
> > $ add_changelog -e"- russian Summary" joe.spec
> >
> > изменения снова необходимо зафиксировать (сделать commit)
> > $ git-commit -a -m"Changed version to 3.5-alt2 and added changelog to
> > spec"
>
> Может быть тут правильнее сделать gear-commit ?

Вот это-то и вопрос! gear-commit по идее надо делать когда всё готово, в пакет 
испечён и готов к отправке. НО чтоб проверить его испекаемость надо сделать 
git-commit и последующую пересборку. Не могу же я быть уверен что всё 
пересоберётся. а gear-commit вроде как тоже неправильно _каждый_ раз делать.

> > 8. Теперь по идее снова надо перепроверить сборку ;-)
> > $ gear --hasher -- hsh ~/HASHER
> >
> > 9. Всё замечательно и можно приступать к публикации тех изменений,
> > которые мы внесли в пакет
> >
> > Вот как тут быть я не в курсе... по идее говорят надо сделать gear-commit
> > -a, но ведь все изменения мной уже за-commit-чены и gear-commit -a просто
> > не отработает.
> >
> > Нужно ли что-то делать с тэгами? - git-tag ?
>
> Точно нужно поставить тег, соответствующий версии/релизу, точно такой же,
> какие делает gear-srpmimport.

Формат тега утверждён? Какие инструменты это автоматизирующие будут? Думаю это 
место чревато ошибками.

> > Нужно как-то (gear-release?) сделать тег специального вида, являющийся
> > указанием сборочной системе на сборку пакета, из этого репозитория
> >
> > Способ инициации сборки пакета ещё обсуждается в devel на .
>
> 2ldv@: Еще не обсудился окончательно?

Ждем что скажет Дима

> > 10. Пока я только понял как то, что сделано у себя, залить на git.alt .
> > создаём пустой git репозиторий на git.alt
>
> Этот пункт в любом случае должен идти сразу после локального внесения
> изменений и проверки на собираемость и _до_ вопросов, связанных
> с публикацией в Сизифе, поскольку это более общий случай.

да надо его как-то вынести - ибо общее для всех сценариев.


-- 
Artem Zolochevskiy
Kaliningrad, Russia
JID: az на jabber.org


Подробная информация о списке рассылки docs