вторник, 16 августа 2011 г.

Git - установка и настройка

ставим git и gitosis

Настройка git-сервера

Выполняем инициализацию gitosis-admin репозитория (на сервере):

$ sudo -H -u gitosis gitosis-init < /путь/к/файлу/id_rsa.pub
где id_rsa.pub - ваш публичный кюч.

В ответ будет выдано что-то вроде:
Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/

разрешаем выполнение post-update хука:
$ sudo chmod +x /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update

Клонируем конфиги gitosis на локальный компьютер

$ git clone gitosis@ваш_сервер:gitosis-admin.git

репозиторий в каталоге gitosis-admin, в котором в дирректории keydir лежат публичные ключи людей, которые имеют доступ к данному репозиторию.
В качестве имени файла используется его имя из открытого ключа. Что бы добавить человека нужно, просто, добавить его ключ.
файл gitosis.conf - настройка прав доступа для репозиториев
Добавляем ключи (юзеров) и редактируем конфиг на предмет прав и доступа.
затем коммитим изменения и закидываем их на сервер
$ git commit -am "grant new user ...."
$ git push origin master

Создаем и настраиваем новый репозиторий.

$ git clone gitosis@ваш_сервер:gitosis-admin.git

Редактируем gitosis.conf с добавленным репозиторием test-repo, в конфиг добавляем:

[group test-group]
writable = test-repo
members = логин1 логин2 ...

[repo test-repo]
description = Тестовый репозиторий
owner = имя

после правок делаем коммит:
$ git commit -am "Добавлен репозиторий test-repo"
и записываем изменения:
$ git push origin master

репозиторий готов и можно клонировать:

$ git clone gitosis@git.example.org:test-repo.git
да не забыть добавить хотя бы один файлик, иначе будет ругаться на ошибку.

В некоторых версиях git новые репозитории не создаются автоматически и при попытке клонировать выдается что-то вроде

fatal: 'repositories/имя-репо.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly

В таком случае репозиторий надо создать принудительно. есть два варианта:
1. создавать прямо на удаленном сервере

Создаем нужный каталог и в нем инициируем git
mkdir /srv/gitosis/repositories/test-repo.git
cd /srv/gitosis/repositories/test-repo.git
git init
chown gitosis.gitosis /srv/gitosis/repositories/test-repo.git -R

2. сначала создать локально, а потом залить на сервер.
mkdir test-repo
cd test-repo
git init
git remote add origin gitosis@YOUR_SERVER_HOSTNAME:test-repo.git
добавим какой-нибудь файлик и закомметим его
git push origin master:refs/heads/master

Комментариев нет:

Отправить комментарий