Projet

Général

Profil

Git » Historique » Version 13

Antoine Lubineau, 21/02/2012 20:19

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 4 Antoine Lubineau
h2. "cgit":http://hjemli.net/git/cgit/
22 4 Antoine Lubineau
23 4 Antoine Lubineau
h3. Installation
24 2 Antoine Lubineau
25 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).
26 1 Antoine Lubineau
<pre>
27 8 Antoine Lubineau
wget http://hjemli.net/git/cgit/snapshot/cgit-0.9.0.2.tar.bz2
28 8 Antoine Lubineau
wget http://arch.p5n.pp.ru/~sergej/dl/2011/git-1.7.4.tar.bz2
29 8 Antoine Lubineau
tar xf cgit-0.9.0.2.tar.bz2
30 8 Antoine Lubineau
cd cgit-0.9.0.2
31 8 Antoine Lubineau
tar xf -C git ../git-1.7.4.tar.bz2
32 1 Antoine Lubineau
</pre>
33 1 Antoine Lubineau
34 8 Antoine Lubineau
On peut modifier le @Makefile@ en mettant
35 8 Antoine Lubineau
<pre>CGIT_SCRIPT_PATH = /var/www</pre>
36 8 Antoine Lubineau
et
37 8 Antoine Lubineau
<pre>prefix = /usr/local/cgit</pre>
38 4 Antoine Lubineau
39 9 Antoine Lubineau
Ensuite :
40 9 Antoine Lubineau
<pre>
41 9 Antoine Lubineau
make
42 1 Antoine Lubineau
make install
43 1 Antoine Lubineau
</pre>
44 9 Antoine Lubineau
45 10 Antoine Lubineau
h3. Configuration de cgit
46 1 Antoine Lubineau
47 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@ :
48 12 Antoine Lubineau
<pre>
49 12 Antoine Lubineau
repo    testing
50 12 Antoine Lubineau
        RW+     =   pipo
51 12 Antoine Lubineau
        R       =   gitweb
52 12 Antoine Lubineau
</pre>
53 10 Antoine Lubineau
54 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 ».
55 13 Antoine Lubineau
56 10 Antoine Lubineau
La configuration de @cgit@ se trouve dans @cgitrc(5)@ :
57 1 Antoine Lubineau
<pre>
58 10 Antoine Lubineau
virtual-root=/
59 10 Antoine Lubineau
project-list=/home/git/projects.list
60 10 Antoine Lubineau
scan-path=/home/git/repositories/
61 10 Antoine Lubineau
</pre>
62 10 Antoine Lubineau
63 10 Antoine Lubineau
h4. Configuration d’Apache
64 10 Antoine Lubineau
65 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@ :
66 10 Antoine Lubineau
<pre>
67 6 Antoine Lubineau
usermod -aG git www-data
68 1 Antoine Lubineau
</pre>
69 1 Antoine Lubineau
70 11 Antoine Lubineau
Dans @~git/.gitolite.rc@, changer
71 1 Antoine Lubineau
<pre>
72 1 Antoine Lubineau
$REPO_UMASK = 0077;
73 1 Antoine Lubineau
</pre>
74 1 Antoine Lubineau
en
75 1 Antoine Lubineau
<pre>
76 1 Antoine Lubineau
$REPO_UMASK = 0027;
77 1 Antoine Lubineau
</pre>
78 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).
79 1 Antoine Lubineau
80 10 Antoine Lubineau
À mettre dans un _virtual host_ d’Apache :
81 1 Antoine Lubineau
<pre>
82 10 Antoine Lubineau
        DocumentRoot /var/www
83 10 Antoine Lubineau
        <Directory /var/www/>
84 10 Antoine Lubineau
                Addhandler cgi-script .cgi
85 10 Antoine Lubineau
                DirectoryIndex cgit.cgi
86 10 Antoine Lubineau
                Options +FollowSymLinks +ExecCGI
87 10 Antoine Lubineau
                AllowOverride None
88 10 Antoine Lubineau
                Order allow,deny
89 10 Antoine Lubineau
                allow from all
90 2 Antoine Lubineau
91 10 Antoine Lubineau
                RewriteEngine On
92 10 Antoine Lubineau
                RewriteBase /
93 10 Antoine Lubineau
                RewriteCond %{REQUEST_FILENAME} !-f
94 10 Antoine Lubineau
                RewriteCond %{REQUEST_FILENAME} !-d
95 10 Antoine Lubineau
                RewriteRule (.*) cgit.cgi/$1
96 10 Antoine Lubineau
                RewriteRule ^cgit.cgi$  cgit.cgi/
97 10 Antoine Lubineau
        </Directory>
98 10 Antoine Lubineau
</pre>