Git.alt/Краткое руководство: различия между версиями
м (→Сборка пакета в другие поддерживаемые репозитории: s/M50/M51/g, gear-create-tag ref) |
м (→Создание нового репозитория и работа над ним: .git/config ref) |
||
Строка 41: | Строка 41: | ||
... | ... | ||
$ | $ | ||
Указание remote и бранча в команде push необходимо только в первый раз - для создания бранча master в удалённом репозитории. <tt>git remote add</tt> создаёт в конфиг-файле локального репозитория запись, подобную такой: | Указание remote и бранча в команде push необходимо только в первый раз - для создания бранча master в удалённом репозитории. <tt>git remote add</tt> создаёт в конфиг-файле локального репозитория<ref>{{path|.git/config}}</ref> запись, подобную такой: | ||
[remote "origin"] | [remote "origin"] | ||
url = ssh://git.alt/people/dottedmag/packages/test.git | url = ssh://git.alt/people/dottedmag/packages/test.git | ||
fetch = +refs/heads/*:refs/remotes/origin/* | fetch = +refs/heads/*:refs/remotes/origin/* | ||
И поэтому в дальнейшем <tt>git push</tt> будет отправлять | И поэтому в дальнейшем <tt>git push</tt> будет отправлять в удалённый репозиторий все локальные ветки (<tt>refs/heads/*</tt>), по названию соответствующие удалённым (<tt>refs/remotes/origin/*</tt>). | ||
== Сборка пакета в Сизиф == | == Сборка пакета в Сизиф == |
Версия от 13:12, 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 создаёт в конфиг-файле локального репозитория[5] запись, подобную такой:
[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 и создаём подписанный тэг[6]:
$ 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