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

Kirill Maslinsky kirill на altlinux.ru
Пт Ноя 24 13:55:47 MSK 2006


> Помогайте, что где не так/не совсем так/совсем не так
> 
> Итак что хотим. Хотим показать как сделать 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 при комитте?

Может, стоит ввести в примерах где-то 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 ?

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

Точно нужно поставить тег, соответствующий версии/релизу, точно такой же, 
какие делает gear-srpmimport.

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

2ldv@: Еще не обсудился окончательно?

> 10. Пока я только понял как то, что сделано у себя, залить на git.alt .
> создаём пустой git репозиторий на git.alt

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

> $  ssh git.alt git-init-db joe
> 
> закачать gear репозиторий с которм мы работали/создали на git.alt
> $ git-push --all git.alt:packages/joe.git
> 
> 
> Кто прояснит про пункт 9 ?
> 
> -- 
> Artem Zolochevskiy
> Kaliningrad, Russia
> JID: az at jabber.org
> _______________________________________________
> docs mailing list
> docs at lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/docs

-- 
Kirill Maslinsky
ALT Linux Documentation Team
http://heap.altlinux.ru
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.altlinux.org/pipermail/docs/attachments/20061124/2ca56abc/attachment-0001.bin 


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