Git.alt/Справочник: различия между версиями
(TODO) |
(Сборка пока не функционирует) |
||
Строка 4: | Строка 4: | ||
== Что такое <tt>git.alt</tt>? == | == Что такое <tt>git.alt</tt>? == | ||
<tt>git.alt</tt> — это хостинг git-репозиториев, | <tt>git.alt</tt> — это хостинг git-репозиториев, заточенный под нужды разработчиков Sisyphus. | ||
Похожие сервисы - это [http://github.com/ github] или [http://gitorious.com/ gitorious]. <tt>git.alt</tt> отличается от них развитым SSH-интерфейсом для управления репозиториями, богатыми возможностями оповещения по e-mail и относительно неразвитым web-интерфейсом. | Похожие сервисы - это [http://github.com/ github] или [http://gitorious.com/ gitorious]. <tt>git.alt</tt> отличается от них развитым SSH-интерфейсом для управления репозиториями, богатыми возможностями оповещения по e-mail и относительно неразвитым web-интерфейсом. | ||
Строка 197: | Строка 197: | ||
==== task, build ==== | ==== task, build ==== | ||
Пока что не функционируют. | |||
=== Клонирование и работа с репозиториями === | === Клонирование и работа с репозиториями === | ||
Строка 250: | Строка 250: | ||
== Сборка пакетов в Sisyphus == | == Сборка пакетов в Sisyphus == | ||
Пока что не функционирует. | |||
== Работает от == | == Работает от == | ||
<tt>git.alt</tt> работает при помощи комплекса утилит <tt>girar</tt>, исходный код которых можно найти [http://git.altlinux.org/people/ldv/packages/?p=girar.git;a=summary здесь]. | <tt>git.alt</tt> работает при помощи комплекса утилит <tt>girar</tt>, исходный код которых можно найти [http://git.altlinux.org/people/ldv/packages/?p=girar.git;a=summary здесь]. |
Версия от 01:46, 14 августа 2008
Что такое git.alt?
git.alt — это хостинг git-репозиториев, заточенный под нужды разработчиков Sisyphus.
Похожие сервисы - это github или gitorious. git.alt отличается от них развитым SSH-интерфейсом для управления репозиториями, богатыми возможностями оповещения по e-mail и относительно неразвитым web-интерфейсом.
Как им воспользоваться?
git.alt предоставляет несколько видов доступа:
- SSH-доступ. Предоставляет несколько команд: для поиска репозиториев, их клонирования, создания, удаления, запуска сборки, контроля за состоянием сборки, а также служебных.
- ssh, git, rsync, http — доступ для непосредственной работы с репозиториями. git, rsync и http-адреса предоставляют r/o доступ, ssh — r/w.
- Web-интерфейс. Находится по адресу http://git.altlinux.org/, предоставляет навигацию по списку репозиториев и gitweb для индивидуальных репозиториев.
SSH-доступ к git.alt выдаётся после принятия в ALT Linux Team.
SSH-доступ
git.alt доступен по SSH по адресу git.altlinux.org:222. Аккаунт для доступа — git_$USERNAME, где USERNAME — имя, присвоенное в процессе принятия в Team, с символами «-» заменёнными на «_».
Пример ~/.ssh/config:
Host git.alt HostName git.altlinux.org Port 222 User git_USERNAME
Для работы из-за прокси и в других сложных условиях SSH также доступен по адресу git.altlinux.org:443.
Список команд выдаётся при ssh-логине без команды или с командой help:
$ ssh git.alt help Available commands: help git-receive-pack <directory> git-upload-pack <directory> charset <path to git repository> [<charset>] clone <path to git repository> [<path to directory>] find-package <pattern> init-db <path to directory> ls [<path to directory>] mv-db <path to source directory> <path to destination directory> quota rm-db <path to git repository> task {list|new|show|drop|add|run} ... build <path to gear repository> <tag name> [<binary package repository name>] [<project name>] $
Во всех командах суффикс директорий репозиториев .git опционален и может быть опущен. В выводе команд .git присутствует всегда.
ls
$ ssh git.alt ls [<directory>]
Эта команда позволяет посмотреть содержимое различных директорий на git.alt:
$ ssh git.alt ls /people/dottedmag/public total 24 drwxr-sr-x 5 4096 Jun 13 10:22 bugzilla-repo-sync.git ... drwxr-sr-x 5 4096 Jul 7 18:03 wackoconvert.git $
Без параметров — показывает содержимое /people/$USERNAME:
$ ssh git.alt ls total 16 drwxr-s--- 5 4096 May 30 21:27 etc drwxr-sr-x 14 4096 Aug 13 23:53 packages drwxr-s--x 2 4096 Feb 13 2007 private drwxr-sr-x 8 4096 Aug 13 23:57 public $
От этой же директории отсчитываются относительные пути:
$ ssh git.alt ls public total 24 drwxr-sr-x 5 4096 Jun 13 10:22 bugzilla-repo-sync.git ... drwxr-sr-x 5 4096 Jul 7 18:03 wackoconvert.git $
find-package
$ ssh git.alt find-package <pattern>
Эта команда позволяет искать репозитории по переданному образцу. Единственный метасимвол, допустимый в образце — *. Репозитории ищутся в директории packages каждого пользователя, поскольку предполагается, что gear-репозитории располагаются именно там.
$ ssh git.alt find-package glibc* /people/avm/packages/glibc.git 1216320095 ... /people/peet/packages/glibc-kernheaders.git 1177084354 /people/mike/packages/glibc-kvercheck.git 1160664813 $ ssh git.alt find-package glibc /people/avm/packages/glibc.git 1216320095 ... /people/peet/packages/glibc.git 1177084600 $
Вторая колонка в выводе find-package — unixtime времени последнего обновления репозитория.
clone
$ ssh git.alt clone <path to git repository> [<destination directory>]
Эта команда позволяет склонировать создать в своей директории копию репозитория для начала работы над ним.
Без второго аргумента — клонирует в директорию packages:
$ ssh git.alt clone /people/ldv/glibc.git Initialized empty Git repository in /people/dottedmag/packages/glibc.git/ $
Вторым аргументом можно указать как директорию, в которую нужно поместить клон репозитория, так и название репозитория:
$ ssh git.alt clone /people/ldv/glibc.git public Initialized empty Git repository in /people/dottedmag/public/glibc.git/ $ ssh git.alt clone /people/ldv/glibc.git public/test Initialized empty Git repository in /people/dottedmag/public/test.git/ $
Можно также склонировать репозиторий, находящийся вне git.alt:
$ ssh git.alt clone http://github.com/dottedmag/madshelf.git public Initialized empty Git repository in /people/dottedmag/packages/public.git/ Getting alternates list for http://github.com/dottedmag/madshelf.git ... walk 03d18e21d85fa30fc3ac8d921eb391e2a7bb242a $
init-db
$ ssh git.alt init-db <path to directory>
Позволяет создать новый git-репозиторий. По умолчанию репозиторий создаётся в директории packages:
$ ssh git.alt init-db test Initialized empty Git repository in ./ girar-init-db: /people/dottedmag/packages/test.git
При указании пути создаёт репозиторий по указанному пути:
$ ssh git.alt init-db public/test Initialized empty Git repository in ./ girar-init-db: /people/dottedmag/public/test.git
mv-db
$ ssh git.alt mv-db <path to source directory> <path to destination directory>
Позволяет перемещать и переименовывать свои репозитории. При указании только имени репозитория подразумевается директория packages.
Перемещение packages/test.git в public/newname.git:
$ ssh git.alt mv-db test public/newname $
Перемещение public/newname.git в packages/test.git:
$ ssh git.alt mv-db public/newname test $
Переименовывание packages/test.git в packages/megatest.git:
$ ssh git.alt mv-db test megatest $
rm-db
$ ssh git.alt rm-db <path to git repository>
Позволяет удалять свои репозитории. При указании только имени репозитория подразумевается директория packages:
$ ssh git.alt rm-db megatest # удаляет packages/megatest.git $ ssh git.alt rm-db public/test
Вспомогательные команды
charset
$ ssh git.alt charset <path to git repository> [<charset>]
Позволяет узнать или установить кодировку, отдаваемую web-сервером при отдаче raw-файлов указанного git-репозитория:
$ ssh git.alt charset packages/glibc utf-8 $ ssh git.alt charset packages/glibc cp1252 $ ssh git.alt charset packages/glibc cp1252 $
quota
$ ssh git.alt quota
Позволяет узнать квоту и занимаемое пользователем дисковое пространство.
$ ssh git.alt quota Filesystem blocks quota limit grace files quota limit grace /dev/simfs 16932 977M 1465M 555 100k 150k $
git-receive-pack, git-upload-pack
Эти команды используются утилитами git-push, git-pull и подобными и не предназначены для вызова пользователем.
task, build
Пока что не функционируют.
Клонирование и работа с репозиториями
TODO
Web-интерфейс
TODO
Структура репозиториев
git.alt содержит два дерева репозиториев:
- репозитории /people/$USERNAME для каждого зарегистрированного пользователя
- репозитории /archive для пакетов Sisyphus
/people
Каждому зарегистрированному на git.alt разработчику предоставляется место для git-репозиториев, начинающееся с /people/$USERNAME. Структура для хранения репозиториев жёстко определена:
/people/$USERNAME/etc
Содержит репозитории packages.git, private.git, public.git, с помощью которых можно управлять почтовой подпиской.
/people/$USERNAME/packages
Директория предназначена для хранения gear-репозиториев для пакетов Сизифа. Публично доступна.
git-репозитории в этой директории будут искаться при выполнении команды find-package, и эта директория будет использоваться по умолчанию в командах init-db, clone, build.
/people/$USERNAME/private
Директория предназначена для хранения приватных репозиториев, о существовании и содержании которых должно быть известно только самому разработчику.
Для удобства работают прямые http-ссылки на файлы репозиториев, размещённых в этой директории.
/people/$USERNAME/public
Директория предназначен для хранения публичных git-репозиториев, не являющихся gear-репозиториями для пакетов Сизифа.
/archive
В этой директории размещаются gear-репозитории пакетов Sisyphus.
Репозиторий для каждого пакета создаётся с помощью утилиты gear-srpmimport на основе прошедших incoming src.rpm-пакетов, а не на основе gear-репозитория, из которых были собраны src.rpm, поэтому репозиторий /archive следует использовать для разработки только в том случае, когда gear-репозиторий для пакета отсутствует.
Почтовая подписка
TODO
Сборка пакетов в Sisyphus
Пока что не функционирует.
Работает от
git.alt работает при помощи комплекса утилит girar, исходный код которых можно найти здесь.