git.alt/Краткое руководство

Материал из ALT Linux Wiki

Эта страница приводит примеры использования git.alt для работы над пакетами, но не является справочником по git.alt или учебником по git.

Настройка

Убедитесь, что ваш SSH-ключ зарегистрирован принимающими в команду и проведите настройку как описано в справочнике.

Клонирование чужого репозитория для работы над ним

Для поиска репозитория используется команда find-package:

$ ssh git.alt find-package bugzilla
/people/vvk/packages/bugzilla.git	1168522087
$

Склонировать репозиторий можно с помощью команды clone:

$ ssh git.alt clone /people/vvk/packages/bugzilla.git
Initialized empty Git repository in /people/dottedmag/packages/bugzilla.git/
$

Эта команда создаст вашу копию репозитория на сервере git.alt. Для работы с ним необходимо склонировать этот репозиторий на локальную машину:

$ git clone ssh://git.alt/people/dottedmag/packages/bugzilla.git
Initialized empty Git repository in /home/dottedmag/bugzilla/.git/
....
$

Создание нового репозитория и работа над ним

Создать свой репозиторий на git.alt очень просто:

$ ssh git.alt init-db test
Initialized empty Git repository in ./
girar-init-db:	/people/dottedmag/packages/test.git
$

Поскольку в созданном репозитории нет ни одного коммита, то git clone будет ругаться при попытке его склонировать. Если необходимо создать пустой локальный репозиторий:

$ mkdir test; cd test; git-init
Initialized empty Git repository in /home/dottedmag/test/.git/
$

Закоммитить в него нужное содержимое и отправить на git.alt:

$ git remote add origin ssh://git.alt/people/dottedmag/packages/test.git
$ git push origin master
...
$

Указание remote и бранча в команде push необходимо только в первый раз - для создания бранча master в удалённом репозитории. git remote add создаёт в конфиг-файле локального репозитория запись, подобную такой:

[remote "origin"]
       url = ssh://git.alt/people/dottedmag/packages/test.git
       fetch = +refs/heads/*:refs/remotes/origin/*

И поэтому в дальнейшем git push будет отправлять на удалённый репозиторий все локальные ветки (refs/heads/*), по названию соответствующие удалённым (refs/remotes/origin/*).

Сборка пакета в Сизиф

Создаём подписанный тэг:

$ git tag -s -m "test-0.1-alt1" test-0.1-alt1
$ git push origin --tags

Отправляем пакет на сборку в Сизиф:

$ ssh git.alt build packages/test.git test-0.1-alt1

Обратите внимание: тэг, предназначенный для сборки, фиксируется в момент добавления подзадания. Если в исходном репозитории тэг с этим именем потом изменился, то в задании сборочный тэг останется прежним. Если требуется изменить сборочный тэг в задании, то придётся удалить прежнее подзадание и добавить новое. Если же важен порядок сборки пакетов в задании, следует ликвидировать всё задание и создать новое.

Сборка пакета в другие поддерживаемые репозитории

Помимо Сизифа пакет можно отправить в другой репозиторий, напрмер branch/5.0.

Cписок репозиториев можно получить с помощью команды ssh git.alt task new --help. Пример:

$ ssh git.alt task new --help
usage: girar-task new [<binary_repository_name>]
Valid repositories are: sisyphus 5.0 4.1 4.0

Создаём подписанный тэг:

$ git tag -s -m "test-0.1-alt1" test-0.1-alt1
$ git push origin --tags

Отправляем пакет на сборку:

$ ssh git.alt build -b 5.0 packages/test.git test.0.1-alt1

Сборка группы пакетов

Создаём подписанные тэги для репозиториев:

$ 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 git.alt task new

Добавляем репозитории и тэги:

$ ssh git.alt task add repo packages/test.git test-0.1-alt1
$ ssh git.alt task add repo packages/test2.git test2-0.1-alt1

Запускаем задачу:

$ ssh git.alt task run

Перекладывание (копирование) собранного пакета

Этот пример демонстрирует копирование пакета из sisyphus в 5.0.

$ ssh git.alt task new 5.0
$ ssh git.alt task add copy update-kernel sisyphus
$ ssh git.alt task run

Результат сборки

Результат выполнения задания вы можете посмотреть на

http://git.altlinux.org/tasks/<TASK>/build/

где <TASK> — номер присвоенного задания. Или статус собственных задач на git.alt:

ssh git.alt task ls