Gitosis якось так або половина авторів мудаки.

Post date: Aug 12, 2010 1:35:14 PM

Е така штука зветься гітосіс. Колись вона взагалі не пахала, але останім часом наче на ньому можна щось підняти.

Берем цю фігню із танка:

git clone git://eagain.net/gitosis.git

cd gitosis

sudo python setup.py install

Або якщо ви використовуєте дебіан/убунту

apt-get install gitosis

Далі необхідно це все налаштувати. То спершу треба створити користувача від імені якого все це буде крутитись на сервері (назвемо його якось по дурному, наприклад gituser).

useradd gituser

Для роботи із гітосісом нам також знадобиться ssh key. Якщо такого ще немає то заводим його:

ssh-keygen

Отриманий таким чином ключ необхідно скормити гітосісу при ініціалізації:

sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub

Далі нам треба склонувати репо із всіма налаштуваннями цього звіра:

git clone gituser@your.server.com:gitosis-admin.git

І тільки після всіх цих маніпуляцій ми можемо перейти до додавання нових користувачів, груп та репозитарієв.

Що ж почнемо із груп та користувачів. Для цього відкриваємо файл gitosis.conf і дописуємо туди:

[group usersGroup]

members = vany@host1 igor@host2 vany@host2

writable = repo_name

Тут ми додали три юзери і сказали, що ці невдахи можуть писати у репо із назвою repo_name.

Зараз ми ще опишемо власне це репо.

[repo repo_name]

gitweb = no

description = Goagle web site

owner = Vany Ivanov

daemon = no

Що це все значить я поняття не маю так що не питайте.

Остаточний вигляд gitosis.conf є таким:

[gitosis]

[group gitosis-admin]

writable = gitosis-admin

members = gituser@localhost vany@host2

[group usersGroup]

members = vany@host1 igor@host2 vany@host2

writable = repo_name

[repo repo_name]

gitweb = no

description = Goagle web site

owner = Vany Ivanov

daemon = no

Але аби ці юзери могли туди взагалі по ssh дістатись необхідно їх публічні ключі запхати у папку keydir.

cp ~/vany.pub keydir/

git add .

git commit -am "Add vanys pub key"

git push

Здавалось би наче все готово і можна йти напрягати юзерів аби працювали, але дідько лисого. Спершу треба створити репо і запхати його на сервер. Отож туду некст:

mkdir repo_name

cd repo_name

git init

git remote add origin gituser@your.server.com:repo_name.git

touch some.file

git add .

git commit -am "Initial commit"

git push origin master

Оце ми тут щойно створили папку для проекта, ініціювали там репозиторій гітівський, додали remote origin (тобто куди пушати наші зміни), створили пустий файл (бо десь є проблеми із пустими репозиторіями), закомітали це і надіслали на наш сервер.

Якщо у вас все вийшло у вас баги і дотого ж багато.

А якщо як і у мене воно все навернулось, то прошу читати далі.

Отож для того аби це лайно завертілось необхідно його змити...:

    1. прописати юзеров через коми; (Оце якраз була дуже погана думка)

    2. створити групу і там прописати юзеров;

    3. описати параметри самого репо;

Отож остаточній варіант буде виглядати приблизно так:

[gitosis]

loglevel = DEBUG

[group gitosis-admin]

writable = gitosis-admin

members = gituser@localhost vany@host2

[group usersGroup]

members = vany@host1 igor@host2 vany@host2

writable = repo-name

[repo repo-name]

gitweb = no

description = Goagle web site

owner = Vany Ivanov

daemon = no

А папку із репо перейменувати на бла-бла.

Далі можна спокійно створено й перейменоване репо заливати на сервер.

Опція loglevel = DEBUG дуже корисна якщо у вас все одно нічого не виходить або просто цікаво подивитись як то все працює.

Також гамнети стверджують, що інколи треба робити це:

chmod 755 /home/gituser/repositories/gitosis-admin.git/hooks/post-update

Але наскільки то є правда підтвердити або спростувати було лінь (але ця фігня в конкретному випадку не допомогла)

ПС на просторах гамнета ніякої адекватної інформації знайдено не було.

ППС аффтари статей про гітосіс стрибніть зі скали

ПППС аффтари гітосіса див вище

ППППС аффтар цієї статті приєднується до всіх аффтарів статтей про гітосіс тобто до мудаків....