Projet

Général

Profil

Git » Historique » Version 10

Antoine Lubineau, 21/02/2012 20:05

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 10 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@).
48 10 Antoine Lubineau
49 10 Antoine Lubineau
La configuration de @cgit@ se trouve dans @cgitrc(5)@ :
50 1 Antoine Lubineau
<pre>
51 10 Antoine Lubineau
virtual-root=/
52 10 Antoine Lubineau
project-list=/home/git/projects.list
53 10 Antoine Lubineau
scan-path=/home/git/repositories/
54 10 Antoine Lubineau
</pre>
55 10 Antoine Lubineau
56 10 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 10 Antoine Lubineau
58 10 Antoine Lubineau
h4. Configuration d’Apache
59 10 Antoine Lubineau
60 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@ :
61 10 Antoine Lubineau
<pre>
62 6 Antoine Lubineau
usermod -aG git www-data
63 1 Antoine Lubineau
</pre>
64 1 Antoine Lubineau
65 10 Antoine Lubineau
Faire un @chmod -R g+rX@ sur les dépôts existants (*pas gitolite-admin.git* en général), et changer
66 1 Antoine Lubineau
<pre>
67 1 Antoine Lubineau
$REPO_UMASK = 0077;
68 1 Antoine Lubineau
</pre>
69 1 Antoine Lubineau
en
70 1 Antoine Lubineau
<pre>
71 1 Antoine Lubineau
$REPO_UMASK = 0027;
72 1 Antoine Lubineau
</pre>
73 1 Antoine Lubineau
dans @~git/.gitolite.rc@ (ce réglage ne vaut que pour les dépôts qui seront créés par la suite).
74 1 Antoine Lubineau
75 10 Antoine Lubineau
À mettre dans un _virtual host_ d’Apache :
76 1 Antoine Lubineau
<pre>
77 10 Antoine Lubineau
        DocumentRoot /var/www
78 10 Antoine Lubineau
        <Directory /var/www/>
79 10 Antoine Lubineau
                Addhandler cgi-script .cgi
80 10 Antoine Lubineau
                DirectoryIndex cgit.cgi
81 10 Antoine Lubineau
                Options +FollowSymLinks +ExecCGI
82 10 Antoine Lubineau
                AllowOverride None
83 10 Antoine Lubineau
                Order allow,deny
84 10 Antoine Lubineau
                allow from all
85 2 Antoine Lubineau
86 10 Antoine Lubineau
                RewriteEngine On
87 10 Antoine Lubineau
                RewriteBase /
88 10 Antoine Lubineau
                RewriteCond %{REQUEST_FILENAME} !-f
89 10 Antoine Lubineau
                RewriteCond %{REQUEST_FILENAME} !-d
90 10 Antoine Lubineau
                RewriteRule (.*) cgit.cgi/$1
91 10 Antoine Lubineau
                RewriteRule ^cgit.cgi$  cgit.cgi/
92 10 Antoine Lubineau
        </Directory>
93 10 Antoine Lubineau
</pre>