git.alt/Краткое руководство
Материал из ALT Linux Wiki
(Убрал stub) |
м (вычитка крайней правки) |
||
(54 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
- | + | {{DISPLAYTITLE:git.alt/Краткое руководство}} | |
- | + | ||
- | + | ||
- | + | ||
Эта страница приводит примеры использования <tt>git.alt</tt> для работы над пакетами, но не является [[Справочник по git.alt|справочником по git.alt]] или учебником по [[git]]. | Эта страница приводит примеры использования <tt>git.alt</tt> для работы над пакетами, но не является [[Справочник по git.alt|справочником по git.alt]] или учебником по [[git]]. | ||
== Настройка == | == Настройка == | ||
- | Убедитесь, что ваш SSH-ключ зарегистрирован [[Join|принимающими в команду]] и проведите настройку | + | Убедитесь, что ваш SSH-ключ зарегистрирован [[Join|принимающими в команду]], и проведите настройку в соответствии с описанием в [[Справочник по git.alt#SSH-доступ|справочнике]]. |
+ | |||
+ | {{Важно|С 01.08.2015г Для работы с git репозиторием надо настроить доступ к двум серверам : | ||
+ | '''gitery.altlinux.org (gitery)''' и '''git.altlinux.org (girar)''', поэтому '''дальнейшая часть статьи требует корректировки'''. Ссылка: [https://lists.altlinux.org/pipermail/devel/2015-August/199990.html <nowiki>[devel] I: git.alt ssh interface split</nowiki>].}} | ||
+ | |||
+ | Дальнейшая инструкция подразумевает, что ssh-клиент настроен в соответствии с описанием в [[Справочник по git.alt#SSH-доступ|справочнике по git.alt]], в частности, в конфигурационном файле {{path|~/.ssh/config}} есть хосты с именами <tt>git.alt</tt> и <tt>gitery.alt</tt>. | ||
== Клонирование чужого репозитория для работы над ним == | == Клонирование чужого репозитория для работы над ним == | ||
- | Для поиска | + | Для поиска репозиториев используется команда <tt>find-package</tt> (результатов может быть и больше): |
$ ssh git.alt find-package bugzilla | $ ssh git.alt find-package bugzilla | ||
/people/vvk/packages/bugzilla.git 1168522087 | /people/vvk/packages/bugzilla.git 1168522087 | ||
Строка 19: | Строка 21: | ||
Initialized empty Git repository in /people/dottedmag/packages/bugzilla.git/ | Initialized empty Git repository in /people/dottedmag/packages/bugzilla.git/ | ||
$ | $ | ||
- | Эта команда создаст вашу копию репозитория ''на сервере git.alt''. Для работы с ним необходимо склонировать этот репозиторий на локальную машину: | + | Эта команда создаст вашу копию репозитория ''на сервере git.alt''. Для работы с ним необходимо склонировать этот репозиторий на локальную машину<ref>См. тж. {{cmd|girar-clone(1)}} из пакета {{pkg|girar-utils}}</ref>: |
- | $ git clone | + | $ git clone gitery.alt:packages/bugzilla.git |
Initialized empty Git repository in /home/dottedmag/bugzilla/.git/ | Initialized empty Git repository in /home/dottedmag/bugzilla/.git/ | ||
.... | .... | ||
Строка 27: | Строка 29: | ||
== Создание нового репозитория и работа над ним == | == Создание нового репозитория и работа над ним == | ||
- | Создать свой репозиторий на <tt>git.alt</tt> очень просто: | + | Создать свой репозиторий на <tt>git.alt</tt> очень просто<ref>Удалить ненужный: {{cmd|ssh git.alt rm-db test}}</ref>: |
$ ssh git.alt init-db test | $ ssh git.alt init-db test | ||
- | + | girar-init-db: /people/dottedmag/packages/test.git | |
- | girar-init-db: /people/dottedmag/ | + | |
$ | $ | ||
- | Поскольку в созданном репозитории нет ни одного коммита, то <tt>git clone</tt> будет ругаться при попытке его склонировать. | + | Поскольку в созданном репозитории нет ни одного коммита, то <tt>git clone</tt> будет ругаться при попытке его склонировать. Если необходимо создать пустой локальный репозиторий<ref>Некоторые рекомендуют собирать их под {{path|~/git/}}</ref>: |
- | $ mkdir test; cd test; git | + | $ mkdir test; cd test; git init |
Initialized empty Git repository in /home/dottedmag/test/.git/ | Initialized empty Git repository in /home/dottedmag/test/.git/ | ||
$ | $ | ||
- | Закоммитить в него нужное содержимое и отправить на <tt> | + | Закоммитить в него нужное содержимое и отправить на <tt>gitery.alt</tt><ref>См. тж. {{cmd|girar-upload(1)}}</ref>: |
- | $ git remote add origin | + | $ touch README |
+ | $ git add README | ||
+ | $ git commit -m 'first commit' | ||
+ | $ git remote add origin gitery.alt:packages/test.git | ||
$ git push origin master | $ git push origin master | ||
... | ... | ||
$ | $ | ||
- | + | ||
+ | Подробное пояснение действий: | ||
+ | * Создаётся файл {{path|README}} <br />{{cmd|touch README}} | ||
+ | * Файл добавляется в список изменённых файлов для фиксирования (коммита) в локальный git-репозиторий <br />{{cmd|git add README}} | ||
+ | * Происходит фиксация изменений в текущей ветке (бранче, по умолчанию <tt>master</tt>) локального git-репозитория с комментарием <br />{{cmd|git commit -m 'first commit'}} | ||
+ | * Связывается локальный git-репозиторий с удалённым git-репозиторием, расположенным на {{path|gitery.alt:packages/test.git}}, притом удалённый git-репозиторий в локальном репозитории получает имя <tt>origin</tt> <br />{{cmd|git remote add origin gitery.alt:packages/test.git}} | ||
+ | * Добавляется ветка <tt>master</tt> и все изменения, зафиксированные в ней, в удалённый репозиторий с именем <tt>origin</tt> <br />{{cmd|git push origin master}} | ||
+ | |||
+ | Указание локального имени удалённого репозитория <tt>origin</tt> и бранча <tt>master</tt> в команде {{cmd|push}} необходимо только в первый раз для создания бранча <tt>master</tt> в удалённом репозитории. {{cmd|git remote add}} создаёт в конфиг-файле локального репозитория<ref>{{path|.git/config}}</ref> запись, подобную такой: | ||
+ | [remote "origin"] | ||
+ | url = ssh://gitery.alt/people/dottedmag/packages/test.git | ||
+ | fetch = +refs/heads/*:refs/remotes/origin/* | ||
+ | И поэтому в дальнейшем {{cmd|git push}} будет отправлять в удалённый репозиторий все локальные ветки ({{path|refs/heads/*}}), по названию соответствующие удалённым ({{path|refs/remotes/origin/*}}). | ||
+ | |||
+ | == Сборка пакета в Сизиф == | ||
+ | |||
+ | Создаём подписанный тэг (при установленном пакете {{pkg|gear}} вместо {{cmd|git tag}} удобней воспользоваться {{cmd|gear-create-tag}}): | ||
+ | $ 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писок репозиториев можно получить с помощью команды <tt>ssh git.alt task new --help</tt>. | ||
+ | Пример: | ||
+ | $ ssh git.alt 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''' | ||
+ | |||
+ | Отдельным локальным бранчем (например, <tt>t6</tt>) оформляем спек согласно [[BackportsPolicy|backports policy]], коммитим<ref>См. тж. [http://docs.altlinux.org/manpages/gear-commit.1.html gear-commit(1)]</ref> и создаём подписанный тэг<ref>См. тж. [http://docs.altlinux.org/manpages/gear-create-tag.1.html gear-create-tag(1)]</ref>: | ||
+ | $ 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 git.alt 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 git.alt task new | ||
+ | Добавляем репозитории и тэги: | ||
+ | $ ssh git.alt task add repo test.git test-0.1-alt1 | ||
+ | $ ssh git.alt task add repo test2.git test2-0.1-alt1 | ||
+ | Запускаем задачу: | ||
+ | $ ssh git.alt task run | ||
+ | Альтернативно, вместо последовательности команд <tt>task new</tt>, <tt>task add</tt> и <tt>task run</tt> создать и отправить задание на сборку можно так: | ||
+ | $ ssh git.alt build test.git test-0.1-alt1 test2.git test2-0.1-alt1 | ||
+ | |||
+ | == Перекладывание (копирование) собранного пакета == | ||
+ | Этот пример демонстрирует копирование пакета из Sisyphus в t6/branch: | ||
+ | $ ssh git.alt task new t6 | ||
+ | $ ssh git.alt task add copy update-kernel sisyphus | ||
+ | $ ssh git.alt task run | ||
+ | При копировании пакетов из Sisyphus существует более простой способ добиться того же результата: | ||
+ | $ ssh git.alt build -b t6 copy update-kernel | ||
+ | |||
+ | == Результат сборки == | ||
+ | |||
+ | Результат выполнения задания вы можете посмотреть на | ||
+ | |||
+ | <pre>http://git.altlinux.org/tasks/<TASK>/build/</pre> | ||
+ | |||
+ | где <TASK> — номер присвоенного задания. Или статус собственных задач на git.alt: | ||
+ | |||
+ | ssh git.alt task ls | ||
+ | |||
+ | == Удаление пакета == | ||
+ | |||
+ | Осуществляется путем создания задания с запросом на удаление. | ||
+ | Пример: | ||
+ | $ ssh git.alt build -b t6 del linuxwacom | ||
+ | |||
+ | == Примечания == | ||
+ | <references /> | ||
+ | |||
+ | {{Category navigation|title=git.alt|category=git.alt|sortkey={{SUBPAGENAME}}}} | ||
+ | |||
+ | [[Категория:Руководства]] | ||
+ | [[en:git.alt quickstart]] |
Текущая версия на 10:51, 17 декабря 2016
Эта страница приводит примеры использования git.alt для работы над пакетами, но не является справочником по git.alt или учебником по git.
Настройка
Убедитесь, что ваш SSH-ключ зарегистрирован принимающими в команду, и проведите настройку в соответствии с описанием в справочнике.
Дальнейшая инструкция подразумевает, что ssh-клиент настроен в соответствии с описанием в справочнике по git.alt, в частности, в конфигурационном файле ~/.ssh/config есть хосты с именами git.alt и gitery.alt.
Клонирование чужого репозитория для работы над ним
Для поиска репозиториев используется команда 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 gitery.alt:packages/bugzilla.git Initialized empty Git repository in /home/dottedmag/bugzilla/.git/ .... $
Создание нового репозитория и работа над ним
Создать свой репозиторий на git.alt очень просто[2]:
$ ssh git.alt 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/ $
Закоммитить в него нужное содержимое и отправить на 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 ... $
Подробное пояснение действий:
- Создаётся файл 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/*).
Сборка пакета в Сизиф
Создаём подписанный тэг (при установленном пакете gear вместо git tag удобней воспользоваться gear-create-tag):
$ 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 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 git.alt 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 git.alt task new
Добавляем репозитории и тэги:
$ ssh git.alt task add repo test.git test-0.1-alt1 $ ssh git.alt task add repo test2.git test2-0.1-alt1
Запускаем задачу:
$ ssh git.alt task run
Альтернативно, вместо последовательности команд task new, task add и task run создать и отправить задание на сборку можно так:
$ ssh git.alt build test.git test-0.1-alt1 test2.git test2-0.1-alt1
Перекладывание (копирование) собранного пакета
Этот пример демонстрирует копирование пакета из Sisyphus в t6/branch:
$ ssh git.alt task new t6 $ ssh git.alt task add copy update-kernel sisyphus $ ssh git.alt task run
При копировании пакетов из Sisyphus существует более простой способ добиться того же результата:
$ ssh git.alt build -b t6 copy update-kernel
Результат сборки
Результат выполнения задания вы можете посмотреть на
http://git.altlinux.org/tasks/<TASK>/build/
где <TASK> — номер присвоенного задания. Или статус собственных задач на git.alt:
ssh git.alt task ls
Удаление пакета
Осуществляется путем создания задания с запросом на удаление. Пример:
$ ssh git.alt build -b t6 del linuxwacom
Примечания
- ↑ См. тж. girar-clone(1) из пакета girar-utils
- ↑ Удалить ненужный: ssh git.alt rm-db test
- ↑ Некоторые рекомендуют собирать их под ~/git/
- ↑ См. тж. girar-upload(1)
- ↑ .git/config
- ↑ См. тж. gear-commit(1)
- ↑ См. тж. gear-create-tag(1)