Git.alt/Справочник

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Что такое git.alt?

git.alt — это хостинг git-репозиториев, интегрированный с системой хранения и сборки пакетов gear.

Как им воспользоваться?

git.alt предоставляет несколько видов доступа:

  • SSH-доступ. Предоставляет несколько команд: для поиска репозиториев, их клонирования, создания, удаления, запуска сборки, контроля за состоянием сборки, а также служебных.
  • ssh:, git:, http: — доступ для непосредственной работы с репозиториями. git: и 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>]
$

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:

$ ssh git.alt mv-db test public/newname # перемещает packages/test.git в public/newname.git
$ ssh git.alt mv-db public/newname test # перемещает public/newname.git в packages/test.git
$ ssh git.alt mv-db test megatest # переименовывает packages/test.git в packages/megatest.git

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, task, build

TODO

Клонирование и работа с репозиториями

Web-интерфейс

Структура репозиториев

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-репозиторий для пакета отсутствует.

Дополнительные возможности

Почтовая подписка

Сборка пакетов в Sisyphus

Работает от

git.alt работает при помощи комплекса утилит girar, исходный код которых можно найти здесь.