Projet

Général

Profil

Git » Historique » Version 14

Antoine Lubineau, 21/02/2012 20:22

1 1 Antoine Lubineau
h1. Installation et utilisation d’un serveur Git
2 1 Antoine Lubineau
3 2 Antoine Lubineau
"Git":http://git-scm.com/ est un gestionnaire de versions décentralisé, libre et développé en C. À noter la traduction française du "Git community book":http://www.alexgirard.com/git-book/index.html.
4 1 Antoine Lubineau
5 1 Antoine Lubineau
La configuration se fera essentiellement au travers de "Gitolite":https://github.com/sitaramc/gitolite, qui permet de créer des dépôts, gérer les accès push/pull pour des accès en SSH, déléguer des droits, etc. @git-daemon@ permet de donner un accès au travers du protocole @git@, et @cgit@ sera utilisé pour l’interface web et le pull en HTTP (ou HTTPS).
6 1 Antoine Lubineau
7 10 Antoine Lubineau
Les explications qui suivent ont été mises en pratique sur le serveur @git.tetaneutral.net@ de Tetaneutral.net, donc avec une Debian Squeeze.
8 10 Antoine Lubineau
9 2 Antoine Lubineau
h2. "Gitolite":https://github.com/sitaramc/gitolite
10 1 Antoine Lubineau
11 4 Antoine Lubineau
h3. Installation
12 4 Antoine Lubineau
13 4 Antoine Lubineau
h3. Configuration
14 1 Antoine Lubineau
15 8 Antoine Lubineau
Une fois Gitolite installé, la configuration des dépôts et des utilisateurs se fait *uniquement* au travers du dépôt @gitolite-admin.git@. Ce dépôt contient deux dossiers:
16 10 Antoine Lubineau
* @conf@ qui va contenir les fichiers de configuration (le plus souvent un seul, @gitolite.conf@) ;
17 10 Antoine Lubineau
* @keydir@, qui va stocker les clés publiques SSH des utilisateurs.
18 8 Antoine Lubineau
19 1 Antoine Lubineau
h2. git-daemon
20 1 Antoine Lubineau
21 14 Antoine Lubineau
@git-daemon@ vient 
22 14 Antoine Lubineau
23 4 Antoine Lubineau
h2. "cgit":http://hjemli.net/git/cgit/
24 4 Antoine Lubineau
25 4 Antoine Lubineau
h3. Installation
26 2 Antoine Lubineau
27 1 Antoine Lubineau
Comme il n’y a pas de paquet Debian, il faut le compiler à la main. Au moment de la rédaction de ce guide, on ne pouvait pas compiler cgit contre la dernière version de Git (fonctionnel avec cgit 0.9.2.0 et Git 1.7.4).
28 1 Antoine Lubineau
<pre>
29 8 Antoine Lubineau
wget http://hjemli.net/git/cgit/snapshot/cgit-0.9.0.2.tar.bz2
30 8 Antoine Lubineau
wget http://arch.p5n.pp.ru/~sergej/dl/2011/git-1.7.4.tar.bz2
31 8 Antoine Lubineau
tar xf cgit-0.9.0.2.tar.bz2
32 8 Antoine Lubineau
cd cgit-0.9.0.2
33 8 Antoine Lubineau
tar xf -C git ../git-1.7.4.tar.bz2
34 1 Antoine Lubineau
</pre>
35 1 Antoine Lubineau
36 8 Antoine Lubineau
On peut modifier le @Makefile@ en mettant
37 8 Antoine Lubineau
<pre>CGIT_SCRIPT_PATH = /var/www</pre>
38 8 Antoine Lubineau
et
39 8 Antoine Lubineau
<pre>prefix = /usr/local/cgit</pre>
40 4 Antoine Lubineau
41 9 Antoine Lubineau
Ensuite :
42 9 Antoine Lubineau
<pre>
43 9 Antoine Lubineau
make
44 1 Antoine Lubineau
make install
45 1 Antoine Lubineau
</pre>
46 9 Antoine Lubineau
47 10 Antoine Lubineau
h3. Configuration de cgit
48 1 Antoine Lubineau
49 12 Antoine Lubineau
cgit récupère la liste des projets dans @~git/projects.list@. Cette liste est complétée par Gitolite pour les dépôts dont @gitweb@ a les droits en lecture (c’est une dénomination spécifique à gitolite, qui n’est pas incluse dans @@all@). Dans @gitolite.conf@ :
50 12 Antoine Lubineau
<pre>
51 12 Antoine Lubineau
repo    testing
52 12 Antoine Lubineau
        RW+     =   pipo
53 12 Antoine Lubineau
        R       =   gitweb
54 12 Antoine Lubineau
</pre>
55 10 Antoine Lubineau
56 13 Antoine Lubineau
Pour spécifier le propriétaire et la description d’un dépôt, voir le "manuel de gitolite":http://sitaramc.github.com/gitolite/confother_.html, section « specifying gitweb and daemon access ».
57 13 Antoine Lubineau
58 10 Antoine Lubineau
La configuration de @cgit@ se trouve dans @cgitrc(5)@ :
59 1 Antoine Lubineau
<pre>
60 10 Antoine Lubineau
virtual-root=/
61 10 Antoine Lubineau
project-list=/home/git/projects.list
62 10 Antoine Lubineau
scan-path=/home/git/repositories/
63 10 Antoine Lubineau
</pre>
64 10 Antoine Lubineau
65 10 Antoine Lubineau
h4. Configuration d’Apache
66 10 Antoine Lubineau
67 10 Antoine Lubineau
Pour que le serveur web ait les droits de lecture sur les dépôts, il faut ajouter l’utilisateur @www-data@ (ou l’utilisateur sous lequel tourne Apache) au groupe @git@ :
68 10 Antoine Lubineau
<pre>
69 6 Antoine Lubineau
usermod -aG git www-data
70 1 Antoine Lubineau
</pre>
71 1 Antoine Lubineau
72 11 Antoine Lubineau
Dans @~git/.gitolite.rc@, changer
73 1 Antoine Lubineau
<pre>
74 1 Antoine Lubineau
$REPO_UMASK = 0077;
75 1 Antoine Lubineau
</pre>
76 1 Antoine Lubineau
en
77 1 Antoine Lubineau
<pre>
78 1 Antoine Lubineau
$REPO_UMASK = 0027;
79 1 Antoine Lubineau
</pre>
80 11 Antoine Lubineau
Ce réglage n’étant valable que pour les nouveaux dépôts, il faut effectuer un @chmod -R g+rX@ sur les dépôts existants (*pas gitolite-admin.git* en général).
81 1 Antoine Lubineau
82 10 Antoine Lubineau
À mettre dans un _virtual host_ d’Apache :
83 1 Antoine Lubineau
<pre>
84 10 Antoine Lubineau
        DocumentRoot /var/www
85 10 Antoine Lubineau
        <Directory /var/www/>
86 10 Antoine Lubineau
                Addhandler cgi-script .cgi
87 10 Antoine Lubineau
                DirectoryIndex cgit.cgi
88 10 Antoine Lubineau
                Options +FollowSymLinks +ExecCGI
89 10 Antoine Lubineau
                AllowOverride None
90 10 Antoine Lubineau
                Order allow,deny
91 10 Antoine Lubineau
                allow from all
92 2 Antoine Lubineau
93 10 Antoine Lubineau
                RewriteEngine On
94 10 Antoine Lubineau
                RewriteBase /
95 10 Antoine Lubineau
                RewriteCond %{REQUEST_FILENAME} !-f
96 10 Antoine Lubineau
                RewriteCond %{REQUEST_FILENAME} !-d
97 10 Antoine Lubineau
                RewriteRule (.*) cgit.cgi/$1
98 10 Antoine Lubineau
                RewriteRule ^cgit.cgi$  cgit.cgi/
99 10 Antoine Lubineau
        </Directory>
100 10 Antoine Lubineau
</pre>