[Devel] Текущий порядок сборки uniset
Vitaly Lipatov
lav на etersoft.ru
Ср Мар 23 21:38:09 MSK 2011
В сообщении от Понедельник 21 марта 2011 Evgeny Sinelnikov написал(a):
...
> В нашем случае, для еtersoft-build-utils, не указаны ограничения, о
> которых я упоминал:
> - в rpmbb предполагается, что имя пакета совпадает с именем удалённого
> репозитория и находится в каталоге packages/ИМЯ_РЕПОЗИОРИЯ
Я так понимаю, что rpmbb — имя нарицательное, поскольку речь скорее всего о
rpmbs.
Некоторые предположения действительно есть. И они не безосновательны.
1. Инструмент предназначен для сборки пакетов, и место для них определено —
packages.
2. Очень нехорошо, когда название пакета не совпадает с названием репозитория.
3. На самом деле предположения вряд ли есть, потому что публикация идёт через
нечто вроде git push git.alt, которой совершенно всё равно до названий.
> - имена бранчей для бекпортирования фиксированы и я не помню какие, а
> у меня где-как - M51, 5.1, p5...
И это нормально, чтобы люди не делали не помню как, где-как и кое-как.
Любой вариант из M51, 5.1, p5 поддерживается. Они же приняты в girar, так что
не вижу проблем.
> - действия по сборке в карман не предусмотрены, потому что
> предполагаются из имени пакета
Не очень понял.
А что же делает
rpmbs -p название_кармана?
Мне кажется, собирает в карман, и успешно.
> Поскольку, команды высокоуровневые и сложные, мне кажется, что при их
> описании, нужно не просто указывать выполняемые действия, а развёрнуто
> представлять, какие реально команды выполняются.
Возможно. Но вряд ли этому место в описании. Может и стоит предусмотреть
режим, когда будет выводится каждая значимая команда. Это не так сложно.
> Например, с ходу. Мне понравилась утилита ginit:
> Работа с удалённым репозиторием
> * ginit [git.NAME] - создание удалённого репозитория
для git-репозитория с пакетом.
> - создаю каталог /home/sin/git/testpack
> - делаю его текущим
> - пробую выполнить
> $ ginit
> Error in /usr/bin/ginit: Can't detect project name. Run inside git repo.
> $ ginit --help
> Error in /usr/bin/ginit: Can't detect project name. Run inside git repo.
$ ginit -h
ginit - initialize repo in git.alt for current project
Use: ginit [GIRAR]
ginit git.eter - for init in git.eter gear repo
> Где предусловия и постусловия? Пробую так:
А что ты ожидаешь получить, запуская создание удалённого репозитория в пустом
git-репозитории?
> $ git init
> Initialized empty Git repository in /home/sin/git/testpack/.git/
> $ ginit
> Create remote testpack repo in git.alt:
> girar-init-db: /people/sin/packages/testpack.git
> Create git.alt remote repo alias
>
> Отлично! Где был создан удалённый репозиторий?
> $ git remote show
> git.alt
> $ git remote show git.alt
> * remote git.alt
> Fetch URL: git.alt:packages/testpack.git
> Push URL: git.alt:packages/testpack.git
> HEAD branch: (unknown)
>
> Хорошо. Как создать на git.eter?
> $ ginit git.eter
> Create remote testpack repo in git.eter:
> girar-init-db: /people/sin/packages/testpack.git
> Create git.eter remote repo alias
> $ git remote show git.eter
> * remote git.eter
> Fetch URL: git.eter:packages/testpack.git
> Push URL: git.eter:packages/testpack.git
> HEAD branch: (unknown)
>
> Замечательно! Но я должен был об этом всём догадаться. Какая же это
Может, это интуитивно понятно, раз догадался? :)
> детальная документация? Я только после прочтения всего текста понял,
Нито и не говорил, что это детальная документация. Детальную может создать
только сторонний наблюдатель, натыкающийся на недосказанности.
> что [git.NAME] - это предполагаемый псевдоним из ~/.ssh/config для
> соответствующего удалённого узла. Об этом тоже нигде не сказано.
См.
http://www.altlinux.org/Git.alt/Краткое_руководство
Первый пример:
$ ssh git.alt find-package bugzilla
Что такое git.alt, объяснено конечно в стороне по ссылке. Но мне казалось, что
человек, имеющий опыт с ALT, вполне в курсе, что он писал в ~/.ssh/config
> Что же, в итоге делает утилита:
> #!/usr/bin/ginit
> ssh git.NAME init-db GIT_DIR_NAME
> git remote add git.NAME git.NAME:package/GIT_DIR_NAME
>
> Я обычно выполняю это вручную.... Иначе я должен помнить, что имя
ginit на самом деле внутренняя команда, которая используется в других
скриптах.
Но ничего зазорного ввести ginit вместо двух строк с кучей повторяющихся слов
я не вижу. Ещё надо учесть, сколько опечаток и ошибок можно сделать в этих
двух строках.
> репозитория будет соответствовать имени каталога, но ведь так не
> всегда бывает.
Основной проблемой как и является вот эта ссылка «так не всегда бывает». Если
следовать этому ложному (при наличии цели в в виде снижения порога вхождения)
принципу, то надо отказаться от всех обобщений, высокоуровневых языков,
различных классификаций и вообще контекста.
> Удалённый репозиторий должен иметь такое же имя, а что
> если такой уже есть?
Если хочешь запутать других людей, а потом и себя, конечно, можешь создать
удалённый репозиторий test3, в котором хранить последнюю версию uniset. Но
смысл?
> Слишком много контекста... Нельзя рассчитывать, что у того, кто читает
> документацию, есть какой бы то ни было контекст. Либо об этом нужно
Как раз таки надо установить контекст, и действовать в его окружении. Иначе
все программы придётся писать на ассемблере, и начинать с начального
загрузчика в первых 446 байтах MBR.
Без контекста ничего нельзя ни понять, ни запомнить, ни автоматизировать.
> указывать ссылками на другие документы.
Не вижу проблемы указать.
Как и не вижу проблемы дописать узнанное в виде ссылки и строки.
> >> Думаю, что это тема отдельной задачи.
> >
> > Хорошо. Мне просто хочется сейчас ряд простых действий, для того чтобы
> > отправить на сборку новую версию. Если достаточно того, что ты написал
> > выше git push
> > ssh git.eter rebuild
> > пусть так..
>
> нет....
> $ ssh git.eter rebuild PACKAGE_NAME [BRANCH_NAME]
Всё-таки /projects/PACKAGE_NAME
Поверх этого, учитывая пример из документации
$ ssh git.office rebuild -p standpm /projects/asu/standpm-weblog
должен быть инструмент, который позволит связать для данного контекста
репозиторий, карман, версию бранча системы...
Я вообще не понимаю, что это было? Критика инструмента? Ну собери пакет с
новой версией исходников, потратив на это 20 секунд, без него.
Критика недостатка документации? Ну да, может и нет вводной статьи.
Но из практики — когда достаточно знать, что отправить пакет на сборку можно
командой
$ rpmbs -u
и ничего больше знать не надо. Другой подход — изучать _море_ другой, кстати,
тоже ненаписанной и вообще непонятной документации. Проверить это легко на
новом человеке.
--
С уважением,
Виталий Липатов
Россия, Санкт-Петербург. www.etersoft.ru
GNU! ALT Linux Team! WINE! WIKI! LaTeX! LyX!
Подробная информация о списке рассылки Devel