Tutorial 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 gitolite ș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 gitolite, 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, gitolite va crea pe server proiectele noi și va modifica drepturile de acces conform informațiilor din gitolite.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 gitolite. 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

Wild repos

Wild repos sunt proiecte ce pot fi create de către fiecare user în parte, fără intervenția administratorului.

Pentru a modifica drepturile pentru aceste proiecte:

ssh git perms -h

ssh git@host perms -l <repo>
ssh git@host perms <repo> - <rolename> <username>
ssh git@host perms <repo> + <rolename> <username>
# <rolename> uzuale: READERS, WRITERS

Detalii despre drepturi puteți găsi și pe pagina oficială.

Ștergerea proiectelor

Doar wild repos pot fi șterse utilizând pașii următori. Gitolite permite atât ștergerea completă a proiectelor, cât și plasarea acestora într-un sector de Trash, de unde ele pot fi restaurate.

Pentru a putea șterge permanent un proiect acesta trebuie, mai întâi, deblocat. Secvența completă de comenzi pentru procesul de ștergere este:

ssh git@host D unlock <repo>
ssh git@host D rm <repo>

Proiectele nu trebuie deblocate dacă urmează să fie trimise în trash, fiind suficientă comanda:

ssh git@host D trash <repo>

Pentru mai multe informații despre ștergere, incluzând informații despre restaurarea proiectelor din trash:

ssh git@host D -h

Backup

Este absolut necesar să avem o strategie de backup pentru informațiile din gitolite. 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,

Conținutul acestui site reflectă interesele și preferințele autorilor.