Installare git
sudo apt-get install git-core python-setuptools
Installare gitosis
cd /tmpGitosis è un modo "semplificato" - si fa per dire - per gestire gli accessi al repository git e consiste nel modificare un file di configurazione con una serie di autorizzazioni e di chiavi pubbliche ssh associata ad ogni utente.
git clone git://eagain.net/gitosis.git
cd gitosis
python setup.py install
Prima di poter utilizzare gitosis va creato un utente ad hoc e configurato come amministratore di gitosis. L'utente che andiamo a creare molto originariamente si chiamerà git.
l'utente appena creato avrà come unico compito di "ospitare" il repository e di far girare gitosis. Quindi i repository saranno almeno due
sudo adduser \ --system \ --shell /bin/sh \ --gecos 'git version control' \ --group \ --disabled-password \ --home /home/git \ git
- il repository in cui vogliamo mettere i nostri dati da versionare (può essere più di uno)
- il repository amministrativo di gitosis che si chiama gitosis-admin
occorre quindi recuperare la chiave pubblica dell'utente valerio da ~/.ssh/id_rsa.pub ma se non è presente va creata con
ssh-keygen -t rsa
e importata nel repository amministrativo gitosis-admin con
sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub
il quale confermerà con un
si lo dirà 2 volte.
Initialized empty Git repository in ./ Initialized empty Git repository in ./
Bisogna aggiornare alcuni permessi poichè gitosis li imposta in maniera non corretta
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
A questo punto il repository amministrativo è pronto e lo si può accedere ovviamente utilizzando git con
git clone git@localhost:gitosis-admin.git
verrà creata una sandbox con il file e la directory
-rw-r--r-- 1 valerio valerio 142 2009-07-04 17:31 gitosis.conf
drwxr-xr-x 2 valerio valerio 80 2009-07-04 17:31 keydir
gitosis.conf contiene la configurazione degli utenti mentre keydir contiene le chiavi pubbliche di tutti gli utenti (compresa già quella di valerio che è stata passata precedentemente con il comando
sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub
)gitosis.conf contiene le seguenti voci
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = valerio@ken
il che significa che attualmente il repository gitosis-admin è accedibile da valerio dalla macchina ken utilizzando la chiave pubblica valerio@ken che è in
ls -l keydir/
-rw-r--r-- 1 valerio valerio 393 2009-07-04 17:31 valerio@ken.pub
A questo punto l'installazione è conclusa anche se ovviamente dovrebbero essere aggiunti i repository su cui si vuole versionare il proprio codice. Supponendo di voler creare un repository chiamato personale gitosis.conf assumerà l'aspetto
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = valerio@ken
[group team]
writable = personale
members = valerio@ken
dopodichè va fatto il commit ed il push di queste modifiche
git commit -m "new personal repository" -a
git push
a questo punto l'utente valerio@ken è in grado di creare il repository personale con
cd /tmp
mkdir personale
cd personale/
git init
git remote add origin git@localhost:personale.git
echo "il mattino ha l'oro in bocca" > readme.txt
git add readme.txt
git commit -m "primo file"
git push origin master
e il repository personale adesso è accessibile con
git clone git@localhost:personale.gitUtenti multipli
Ovviamente è possibile utilizzare utenti multipli per un singolo repository aggiungendo vari utenti alla configurazione
[group team]
writable = personale
members = vcrini@vcrini-laptop valerio@ken
qui il repository mysite è scrivibile da vcrini e valerio. In keydir va copiata a mano la chiave pubblica vcrini@vcrini-laptop.pub
Volete debuggare?
Aggiungere "loglevel = DEBUG" proprio sotto la voce [gitosis] e fate attenzione agli spazi altrimenti non funziona.
[gitosis]
loglevel = DEBUG
[group gitosis-admin]
writable = gitosis-admin
...
Maggiori informazioni?
C'è un ottimo tutorial su Git qui.