git.alt/Краткое руководство
Эта страница приводит примеры использования gitery.altlinux.org и gyle.altlinux.org (бывшими git.alt и girar) для работы над пакетами, но не является справочником по git.alt или учебником по git. Заметим, что сейчас сервис "гитовница" и "сборочница" разделены, при этом на "сборочнице" - gyle.altlinux.org функционал реализован с помощью пакета Girar.
Настройка
Убедитесь, что ваш SSH-ключ зарегистрирован принимающими в команду, и проведите настройку в соответствии с описанием в справочнике.
Дальнейшая инструкция подразумевает, что ssh-клиент настроен в соответствии с описанием в справочнике по git.alt, в частности, в конфигурационном файле ~/.ssh/config есть хосты с именами gitery.alt и gyle.alt.
Клонирование чужого репозитория для работы над ним
Для поиска репозиториев используется команда find-package (результатов может быть и больше):
$ ssh gitery find-package bugzilla /people/vvk/packages/bugzilla.git 1168522087 $
Склонировать репозиторий можно с помощью команды clone:
$ ssh gitery clone /people/vvk/packages/bugzilla.git Initialized empty Git repository in /people/dottedmag/packages/bugzilla.git/ $
Эта команда создаст вашу копию репозитория на сервере gitery.alt. Для работы с ним необходимо склонировать этот репозиторий на локальную машину[1]:
$ git clone gitery.alt:packages/bugzilla.git Initialized empty Git repository in /home/dottedmag/bugzilla/.git/ .... $
Создание нового репозитория и работа над ним
Создать свой репозиторий на git.alt очень просто[2]:
$ ssh gitery init-db test girar-init-db: /people/dottedmag/packages/test.git $
Поскольку в созданном репозитории нет ни одного коммита, то git clone будет ругаться при попытке его склонировать. Поэтому дальше необходимо создать пустой локальный репозиторий.[3]:
$ mkdir test; cd test; git init Initialized empty Git repository in /home/dottedmag/test/.git/ $
Затем нужно закоммитить в него нужное содержимое (например, файл README) и отправить на gitery.alt[4]:
$ touch README $ git add README $ git commit -m 'first commit' $ git remote add origin gitery.alt:packages/test.git $ git push origin master ... $
Через несколько минут репозиторий появится в списке: $ ssh gitery find-package
Подробное пояснение действий:
- Создаётся файл README
touch README - Файл добавляется в список изменённых файлов для фиксирования (коммита) в локальный git-репозиторий
git add README - Происходит фиксация изменений в текущей ветке (бранче, по умолчанию master) локального git-репозитория с комментарием
git commit -m 'first commit' - Связывается локальный git-репозиторий с удалённым git-репозиторием, расположенным на gitery.alt:packages/test.git, притом удалённый git-репозиторий в локальном репозитории получает имя origin
git remote add origin gitery.alt:packages/test.git - Добавляется ветка master и все изменения, зафиксированные в ней, в удалённый репозиторий с именем origin
git push origin master
Указание локального имени удалённого репозитория origin и бранча master в команде push необходимо только в первый раз для создания бранча master в удалённом репозитории. git remote add создаёт в конфиг-файле локального репозитория[5] запись, подобную такой:
[remote "origin"] url = ssh://gitery.alt/people/dottedmag/packages/test.git fetch = +refs/heads/*:refs/remotes/origin/*
И поэтому в дальнейшем git push будет отправлять в удалённый репозиторий все локальные ветки (refs/heads/*), по названию соответствующие удалённым (refs/remotes/origin/*).
Сборка пакета в Сизиф через gyle.altlinux.org
Создаём подписанный тэг (при установленном пакете gear вместо git tag удобней воспользоваться gear-create-tag):
$ git tag -s -m "test-0.1-alt1" test-0.1-alt1 $ git push origin --tags
Отправляем пакет на сборку в Сизиф:
$ ssh gyle build packages/test.git test-0.1-alt1
Обратите внимание: тэг, предназначенный для сборки, фиксируется в момент добавления подзадания. Если в исходном репозитории тэг с этим именем потом изменился, то в задании сборочный тэг останется прежним. Если требуется изменить сборочный тэг в задании, то придётся удалить прежнее подзадание и добавить новое.
Сборка пакета в другие поддерживаемые репозитории
Помимо Сизифа пакет можно отправить в другой репозиторий; например, branch/5.1.
Cписок репозиториев можно получить с помощью команды ssh gyle task new --help. Пример:
$ ssh gyle task new --help usage: girar-task new [<binary_repository_name>] Valid repositories are: sisyphus t6 p6 c6 p5 5.1 5.0 4.1 4.0
Отдельным локальным бранчем (например, t6) оформляем спек согласно backports policy, коммитим[6] и создаём подписанный тэг[7]:
$ git checkout -b t6 $ $EDITOR test.spec $ git commit -a -m "test-0.1-alt0.M60T.1" $ git tag -s -m "test-0.1-alt0.M60T.1" test-0.1-alt0.M60T.1 $ git push test-0.1-alt0.M60T.1
Отправляем пакет на сборку:
$ ssh gyle build -b t6 packages/test.git test-0.1-alt0.M60T.1
Сборка группы пакетов
Создаём подписанные тэги для репозиториев:
$ cd test $ git tag -s -m "test-0.1-alt1" test-0.1-alt1 $ git push origin --tags $ cd ../test2 $ git tag -s -m "test2-0.1-alt1" test2-0.1-alt1 $ git push origin --tags
Создаём задачу для сборки:
$ ssh gyle task new
Добавляем репозитории и тэги:
$ ssh gyle task add repo test.git 0.1-alt1 $ ssh gyle task add repo test2.git 0.1-alt1
Запускаем задачу:
$ ssh gyle task run
Альтернативно, вместо последовательности команд task new, task add и task run создать и отправить задание на сборку можно так:
$ ssh gyle build test.git 0.1-alt1 test2.git 0.1-alt1
Перекладывание (копирование) собранного пакета
Этот пример демонстрирует копирование пакета из Sisyphus в t6/branch:
$ ssh gyle task new t6 $ ssh gyle task add copy update-kernel sisyphus $ ssh gyle task run
При копировании пакетов из Sisyphus существует более простой способ добиться того же результата:
$ ssh gyle build -b t6 copy update-kernel
Результат сборки
Результат выполнения задания вы можете посмотреть на
http://git.altlinux.org/tasks/<TASK>/build/
где <TASK> — номер присвоенного задания. Или статус собственных задач на girar:
ssh gyle task ls
Удаление пакета
Осуществляется путем создания задания с запросом на удаление. Пример:
$ ssh gyle build -b t6 del linuxwacom
Примечания
- ↑ См. тж. girar-clone(1) из пакета girar-utils
- ↑ Удалить ненужный: ssh gitery rm-db test
- ↑ Некоторые рекомендуют собирать их под ~/git/
- ↑ См. тж. girar-upload(1)
- ↑ .git/config
- ↑ См. тж. gear-commit(1)
- ↑ См. тж. gear-create-tag(1)