Cosmin L. Neagu

Nivel: Avansat
Data ultimei modificări: 2014.09.01

Îndrumar Gitolite

Pentru a folosi Git de unul singur, fără alți colaboratori e suficient
să folosim binarul de Git. Dacă avem mai multe proiecte și pentru
fiecare avem colaboratori diferiți sau drepturi diferite e utilă
folosirea unui sistem de management, chiar dacă este minimal.

Gitolite este un asemenea sistem de management al proiectelor Git.

Instalare

Pe calculatorul ce va găzdui gitosis și proiectele menținute cu
ajutorul lui vom crea utilizatorul git (poate fi orice alt nume).
În home-ul acestui user vom face o clonă git a proiectului gitosis,
de pe GitHub, vom executa procedura de instalare și vom declara cheia
noastră publică ca fiind cheia de administrator.

sudo adduser git
su - git
mkdir -p ~/bin

git clone git://github.com/sitaramc/gitolite
gitolite/install -ln /home/git/bin
gitolite setup -pk id_rsa.pub

Folosire

În urma instalării gitolite are accesibil, pentru cheia administratorului
un proiect numit “gitolite-admin”. Acest proiect conține un director “keydir”
unde vor fi adăugate cheile SSH pentru acces cât și un fișier “conf/gitolite.conf”
care va conține drepturile propriu zise pentru fiecare proiect.

Pentru administrarea gitolite trebuie clonat cu git proiectul gitolite-admin.
Odată clonat, se adaugă cheile persoanelor ce vor avea acces și se modifică
fișierul de configurare unde se vor adăuga proiecte noi cât și persoanele
care au acces de scriere și/sau de citire.
După ce se push-uie modificările cu git, gitosis va crea pe server proiectele
noi și va modifica drepturile de acces conform informațiilor din gitosis.conf

# folosiți propiul user@hostname
git clone git@git.rohost.com:gitolite-admin

--> Aici se adaugă cheile și se modifică config-ul

git add .
git commit -a -m"mesaj informativ"
git push

Din acest moment persoanele care au acces vor putea accesa proiectele
menținute prin intermediul gitosis.
Pentru a copia toate proiectele la care avem acces putem rula o comandă
de genul celei de mai jos. În directorul curent se va crea câte un
subdirector pentru fiecare proiect.

ssh git@git.rohost.com | grep "^ R" |\
> awk '{print $NF}' | while read i; do\
> mkdir -p $i && cd $i &&\
> git clone git@git.rohost.com:$i .\
> && cd -; done

Backup

Este absolut necesar să avem o strategie de backup pentru informațiile
din gitosis. Chiar dacă backup-ul este în afara scopului acestui
articol este un element suficient de important pentru a avea propriul
paragraf.

GitRepo este un exemplu de setup Gitolite + Docker.

Pentru mai multe detalii vizitați website-ul proiectului la adresa
Gitolite

Din documentație:
Diverse,
Wild repos,
Users' view

Conținutul acestui site reflectă interese și preferințe personale. Nu sunt un expert în fiecare subiect atins. Nu prezint adevăruri ci perspective.

Email: cosmin (at) rohost.com

Social: Google+, Twitter, GitHub