No hi ha dubte que a dia d’avui el sistema de control de versions més popular és Git deixant enrera Subversion i incorporant bastantes millores. Això no vol dir que subversion sigui pitjor, per determinats tipus de projecte Subversion pot ser suficient i fins ara ha estat un dels sistemes de control de versió més utilitzats.

Gitolite per la seva banda, és una capa de control d’accés a Git que ens permet donar permisos per branques, etiquetes, arxius o directoris, així doncs es pot donar permís de lectura a Master però no d’escriptura o de creació de branques.

Pel que fa a gitweb com el seu nom indica és un frontend web per consultar, descarregar el codi allotjat a Git.

Comencem la instal·lació:

apt-get install git-core git-doc gitolite git-daemon-run gitweb highlight

Afegim l’usuari git al sistema

adduser git

Accedim amb l’usuari git i fem una configuració básica de git.

su - git
git config --global user.name "git"
git config --global user.mail "git@maquina"

Deixem el servidor git i anem al nostre PC per enviar la clau pública al servidor, el que ens permetrà utilitzar Git sense usuari ni password.

scp /home/notestic/.ssh/id_rsa.pub git@ip-maquina:/tmp/notestic.pub

Tornem al servidor i enviarem a gitolite la clau publica que em pujat

su - git
gl-setup /tmp/notestic.pub

En aquest moment ens sortirà una pantall semblant a aquesta:

# configuration variables for gitolite
 
# PLEASE READ THE DOCUMENTATION BEFORE EDITING OR ASKING QUESTIONS
# ( http://github.com/sitaramc/gitolite/blob/pu/doc/gitolite.rc.mkd )
#   ( or http://sitaramc.github.com/gitolite/doc/gitolite.rc.html )
 
# this file is in perl syntax.  However, you do NOT need to know perl to edit
# it; it should be fairly self-explanatory and easy to maintain
 
# ------------------------------------------------------------------------------
# DO NOT TOUCH THIS SECTION!
# ------------------------------------------------------------------------------
 
$GL_ADMINDIR=$ENV{HOME} . "/.gitolite";
$GL_CONF="$GL_ADMINDIR/conf/gitolite.conf";
$GL_KEYDIR="$GL_ADMINDIR/keydir";
$GL_CONF_COMPILED="$GL_ADMINDIR/conf/gitolite.conf-compiled.pm";
 
# DO NOT CHANGE THE NEXT FOUR LINES UNLESS YOU REALLY KNOW WHAT YOU'RE DOING.
# These variables are set automatically by the install method you choose.
#            (PACKAGE MAINTAINERS: PLEASE READ doc/packaging.mkd)
$GL_PACKAGE_CONF = "/usr/share/gitolite/conf";
$GL_PACKAGE_HOOKS = "/usr/share/gitolite/hooks";
 
# ------------------------------------------------------------------------------
# most often used/changed variables
# ------------------------------------------------------------------------------
$GL_WILDREPOS = 0;
$PROJECTS_LIST = $ENV{HOME} . "/projects.list";
# $WEB_INTERFACE = "gitweb";
# $GITWEB_URI_ESCAPE = 0;
$REPO_UMASK = 0027;
 
# ------------------------------------------------------------------------------
# variables with an efficiency/performance impact
# ------------------------------------------------------------------------------
$GL_BIG_CONFIG = 0;
$GL_NO_DAEMON_NO_GITWEB = 0;
# $GL_NICE_VALUE = 0;
# $BIG_INFO_CAP = 20;

on haurem de canviar la linia

$REPO_UMASK = 0077

per

$REPO_UMASK = 0027

Tornem al PC i configurem el repositori i els seus permisos.
Anem al directori on volem baixar l’administració de gitolite

git clone git@ip-maquina:gitolite-admin.git
cd gitolite-admin/
nano conf/gitolite.conf
 
repo    gitolite-admin
        RW+     =   notestic
 
repo    test
        RW+     =   	@all
        R       =       daemon
        R       =       gitweb

En aquest cas creem el repositori test i donem tots els permisos a tots els usuaris de Git, aprofitem per donar permisos al dimoni de git i gitweb que després instal·larem.
Afegim els canvis al repositori de gitolite

git add *
git commit -am "Afegint repositori test"
git push origin master

Ara ja tenim configurat un repositori anomenat test amb els seus permisos i amb el que ja podriem començar a treballar.

Passarem a configurar gitweb en unes poques passes.
Entrem al servidor com a root o un usuari amb els mateixos privilegis i

nano /etc/gitweb.conf

Canviar

$projectroot = "/var/cache/git";

per

$projectroot = "/home/git/repositories";

i seguidament

nano /etc/sv/git-daemon/run
 
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon \
  "$(git --exec-path)"/git-daemon --verbose --reuseaddr \
    --base-path=/var/cache /var/cache/git

on canviarem el base-path pel nostre quedant així

#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon \
  "$(git --exec-path)"/git-daemon --verbose --reuseaddr \
    --base-path=/home/git /home/git/repositories

Canviem permisos

adduser www-data git
chmod 0775 repositories/ -R

i reiniciem git-daemon

sv restart git-daemon

Ja podem entrar a gitweb amb l’adreça http://ip-servidor/gitweb/