Git.alt/Краткое руководство: различия между версиями

Материал из ALT Linux Wiki
Строка 60: Строка 60:
== Сборка пакета в другие поддерживаемые репозитории ==
== Сборка пакета в другие поддерживаемые репозитории ==


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


Cписок репозиториев можно получить с помощью команды <tt>ssh git.alt task new --help</tt>.
Cписок репозиториев можно получить с помощью команды <tt>ssh git.alt task new --help</tt>.
Строка 66: Строка 66:
  $ ssh git.alt task new --help
  $ ssh git.alt task new --help
  usage: girar-task new [<binary_repository_name>]
  usage: girar-task new [<binary_repository_name>]
  Valid repositories are: '''sisyphus 5.0 4.1 4.0'''
  Valid repositories are: '''sisyphus p5 5.1 5.0 4.1 4.0'''


Создаём подписанный тэг:
Отдельным локальным бранчем (например, <tt>M51</tt>) оформляем спек согласно [[BackportsPolicy|backports policy]] и создаём подписанный тэг<ref>См. тж. {{cmd|gear-create-tag(1)}}</ref>:
  $ git tag -s -m "test-0.1-alt1" test-0.1-alt1
  $ git tag -s -m "test-0.1-alt0.M51.1" test-0.1-alt0.M51.1
  $ git push origin --tags
  $ git push origin --tags
Отправляем пакет на сборку:
Отправляем пакет на сборку:
  $ ssh git.alt build '''-b 5.0''' packages/test.git test.0.1-alt1
  $ ssh git.alt build '''-b 5.1''' packages/test.git test.0.1-alt0.M51.1


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

Версия от 13:07, 27 января 2010

Эта страница приводит примеры использования 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. Для работы с ним необходимо склонировать этот репозиторий на локальную машину[1]:

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

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

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

$ ssh git.alt init-db test
Initialized empty Git repository in ./
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/
$

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

$ touch README
$ git add README
$ git commit -m 'first commit'
$ 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.1.

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

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

Отдельным локальным бранчем (например, M51) оформляем спек согласно backports policy и создаём подписанный тэг[5]:

$ git tag -s -m "test-0.1-alt0.M51.1" test-0.1-alt0.M51.1
$ git push origin --tags

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

$ ssh git.alt build -b 5.1 packages/test.git test.0.1-alt0.M51.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 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

Примечания

  1. См. тж. girar-clone(1)
  2. Удалить ненужный: ssh git.alt rm-db test
  3. Некоторые рекомендуют собирать их под ~/git/
  4. См. тж. girar-upload(1)
  5. См. тж. gear-create-tag(1)