GIT repozitáre cez gitolite

Vytvoriť GIT server pomocou démona git-daemon, ktorý je obsiahnutý v balíčku git-core je naozaj jednoduché avšak má veľa nedostatkov čo sa týka funkcionality. Jednoznačne najväčšími nedostatkami je možnosť autentifikovať používateľov a vytvárať takzvané hooky, ktoré su dobre známe z SVNka a dajú sa veľmi dobre využívať pri rôznych development workflowoch. Preto som začal používať gitolite, ktorý obsahuje všetky chýbajúce fičúrky a k tomu je jednoducho konfigurovateľný.

Strana servera

V rýchlosti si môžeme nainštalovať balíček gitolite pomocou starých známych príkazov. Samozrejme pracujeme na Debian 6. Pokiaľ správne viem v Debian 5 tento balíček nebol obsiahnutý a používal sa v dnešnej dobe už deprecated gitosis.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gitolite

Po tomto sa automatický vytvorí používateľ gitolite, ktorého neskôr použíjeme na konfiguráciu. Ďalším krokom bude nakopírovať náš verejný ssh kľuč do adresára /tmp ak takýto kľúč nemáme vieme si ho jednoducho vytvoriť pomocou príkazu ssh-keygen alebo si len prekopírujeme už existujúce kľuče z nášho lokálneho systému.

$ cd ~/.ssh
$ ls -al
total 20
drwx------  2 lukas lukas 4096 Aug 20 11:09 .
drwxr-xr-x 11 lukas lukas 4096 Aug 20 11:09 ..
-rw-r--r--  1 lukas lukas 1671 Aug 20 11:09 id_rsa # PRIVATNY KLUC
-rw-r--r--  1 lukas lukas  402 Aug 20 11:09 id_rsa.pub # VEREJNY KLUC
-rw-r--r--  1 lukas lukas 3536 Jul 26 14:31 known_hosts

Ak máme kľuč na svojom mieste je vhodné si ho aj nejak slušne premenovať napríklad na lukas.pub a nastaviť mu správne práva, aby ho vedeli používatelia prečítať(v našom prípade používateľ gitolite). Potom sa len prepneme na správcu repozitárov gitolite, spustíme konfigurátor s parametrom na náš verejný kľuč a je hotovo.

# Prekopirujeme si verejny kluc do docasneho adresara
$ cp ~/.ssh/id_rsa.pub /tmp/lukas.pub

# Nastavime prava tak aby si kazdy vedel precitat nas kluc
$ chmod 0666 /tmp/lukas.pub

# Prepnem sa na spravcu repozitarov
$ sudo su gitolite

# Spustime konfiguraciu
$ gl-setup /tmp/lukas.pub

# Poupratujeme za sebou
$ exit
$ rm /tmp/lukas.pub

Čo sa týka konfigurácie na strane servera už nie je nutné nič robiť, všetko podstatné sa už bude diať na strane klienta.

Strana klienta

Konfigurácia používateľov a repozitárov sa deje na strane klienta(teda môžme aj na strane servera, ale príde mi jednoduchšie s tým pracovať lokálne). Celá finta spočíva v tom, že gitolite si drží konfigurácie vo vlastnom repozitáry gitolite-admin, ktorý si vieme naklonovať lokálne a ďalej s ním pracovať. Ešte spomeniem ak by repozitár nešiel naklonovať tak chyba je určíte v tom, že kĺúče sa v ropozitáry gitolite-admin a lokálnej verzii umiestnenej v adresáry ~/.ssh nezhodujú.

$ git clone gitolite@server:gitolite-admin
Cloning into gitolite-admin...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.

Teraz si vieme vpohode pridávať používateľov a repozitáre stačí len vojsť do adresáta gitolite-admin/keydir a nakopírovať tam verejné kľuče používateľov, ktorý nám oni samotní dodajú a potom v súbore gitolite-admin/conf/gitolite.conf nastaviť oprávnenia jednotlivých používaťelov ku repozitárom. V súbore gitolite.conf nám stačí pozrieť predvolené nastavenia, ktoré sú samovysvetľujúce.

$ cp cesta/ku/klucu/pouzivatela.pub keydir/
$ git add keydir/pouzivatela.pub
$ git commit -a -m "pridany novy pouzivatel"
$ git push

Ako vyzerá predvolený gitolite-admin/conf/gitolite.conf

repo    gitolite-admin
        RW+     =   lukas

repo    testing
        RW+     =   @all
Tento obsah bol zaradený v Debian, GIT. Zálohujte si trvalý odkaz.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

*

Môžete použiť tieto HTML značky a atribúty: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>