Se si lavora con file di testo è molto utile poter registrare le varie versioni, in modo da avere una cronologia e controllare le modifiche che sono state apportate. Questo diventa ancora più importante quando si lavora con altre persone, e si deve collaborare alla stesura del testo.
Tutto ciò vale per i programmatori che scrivono codice in gruppo, ma anche per gli accademici che scrivono tesi in LaTex o chiunque lavori in ufficio e voglia tenere traccia delle modifiche che fa ai propri file. Infatti, i documenti di LibreOffice si possono salvare nel formato fodt , che è un unico file di testo. Questo permette di gestire le modifiche in modo semplice (i normali file ODT sono archivi zippati, quindi scomodi da confrontare tra loro). Quello di cui si ha bisogno in questi casi è un sistema di controllo delle versioni: ne esistono diversi, ma il migliore è senza dubbio Git . Progettato per progetti collaborativi (nasce da Linus Torvalds per gestire il codice di Linux), può essere molto comodo anche per singoli utenti.
L’interfaccia a riga di comando potrebbe, però, non essere facile da utilizzare. Per questo si può ricorrere a una interfaccia web, come CGit , semplice, gratuita, e open source. Questa interfaccia permette a chiunque di mettere in piedi un server Git nella propria rete locale o all’interno del proprio PC, per gestire le versioni dei propri file.
Il modo più semplice per gestire un server Git è usare gitolite , ma prima di installarlo è necessario preparare un utente da utilizzare come amministratore:
sudo adduser --system --shell /bin/bash --group --disabled-password --home /var/lib/gitolite gitolite
sudo -u gitolite ssh-keygen
sudo -u gitolite cat /var/lib/gitolite/.ssh/id_rsa.pub
Da notare che la home dell’utente è indicata come /var/lib/gitolite , ma si può scegliere qualsiasi altra cartella. È necessario leggere la chiave pubblica con un programma come cat per copiarla negli appunti, per incollarla poi durante la configurazione.
Si può poi installare il programma con i comandi
sudo apt-get install gitolite
sudo dpkg-reconfigure gitolite
La procedura di configurazione richiederà il nome utente che si vuole assegnare (nell’esempio gitolite ), e la chiave crittografica pubblica, che si può incollare dopo averla copiata negli appunti. In alternativa si può dare il comando gl-setup /var/lib/gitolite/.ssh/id_rsa.pub
.
Per procedere alla configurazione degli utenti e dei repository si possono dare i seguenti comandi
git clone gitolite@localhost:gitolite-admin.git
cd gitolite-admin
Un vantaggio importante di gitolite, rispetto all’uso del semplice git come server, è che gli utenti non devono necessariamente anche essere utenti del sistema: basta aggiungere la loro chiave pubblica in un file del tipo keydir/nomeutente.pub
. I vari repository, invece, si possono gestire dal file conf/gitolite.conf
. Eseguite le modifiche desiderate nella cartella, bisogna inviare le modiifche a gitolite eseguendo il push:
git commit -a
git push origin master
In altre parole, la configurazione di gitolite viene gestita come dei file di testo in un repository git chiamato gitolite-admin.git .
Questo metodo di gestione del repository, però, non è motlo pratico. L’interfaccia web di cgit si può installare con i comandi
sudo apt-get install cgit
sudo a2enmod cgi
se si sta utilizzando un server web Apache2 (infatti il secondo comando serve ad abilitare il modulo CGI di Apache).
In questo momento cgit sarà raggiungibile da un browser all’indirizzo http://localhost/cgit/
. Il problema è che è vuoto, perché non ancora configurato. Si può comunque provare a visualizzare l’interfaccia, per assicurarsi che l’installazione abbia funzionato.
Per configurare cgit si usa il file /etc/cgitrc : è importante dire a cgit dove trovare i vari repository. Per esempio, si pu inserire una riga del tipo:
scan-path=/var/lib/gitolite/repositories
Ovviamente, cambiando la cartella se si sta utilizzando un percorso differente.
In questo modo cgit scansionerà automaticamente la cartella specificata per trovare i vari repository. A questo punto l’interfaccia si comporta come quella di un qualsiasi altro servizio web: è possibile controllare i file ( tree ) di ogni singolo repository, ottenere le differenze tra una versione e la precedente, scorrere le varie commit.
Se ci dovessero essere problemi con la visualizzazione dei repository di gitolite si possono dare i comandi
usermod -aG gitolite http
chmod g+rX /var/lib/gitolite
chmod -R g+rX /var/lib/gitolite/repositories
In modo da fornire a cgit i permessi di accesso ai file die repository. Per evitare problemi in futuro si può impostare l’ UMASK a 0027 nel file /var/lib/gitolite/.gitolite.rc
.
Per visualizzare le descrizioni dei vari repositories, cgit si basa sul file description presente nella cartella .git di ogni repository. Ciò significa che la si può modificare con il comando
echo "La mia descrizione">./.git/description
oppure con nano . È quindi importante che ogni utente sappia di dover modificare questo file per poter visualizzare correttamente la descrizione del proprio repository.