Projet

Général

Profil

Git » Historique » Version 15

Antoine Lubineau, 21/02/2012 21:52

1 1 Antoine Lubineau
h1. Installation et utilisation d’un serveur Git
2 1 Antoine Lubineau
3 15 Antoine Lubineau
{{>toc}}
4 15 Antoine Lubineau
5 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.
6 1 Antoine Lubineau
7 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).
8 1 Antoine Lubineau
9 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.
10 10 Antoine Lubineau
11 2 Antoine Lubineau
h2. "Gitolite":https://github.com/sitaramc/gitolite
12 1 Antoine Lubineau
13 4 Antoine Lubineau
h3. Installation
14 4 Antoine Lubineau
15 4 Antoine Lubineau
h3. Configuration
16 1 Antoine Lubineau
17 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:
18 10 Antoine Lubineau
* @conf@ qui va contenir les fichiers de configuration (le plus souvent un seul, @gitolite.conf@) ;
19 10 Antoine Lubineau
* @keydir@, qui va stocker les clés publiques SSH des utilisateurs.
20 8 Antoine Lubineau
21 1 Antoine Lubineau
h2. git-daemon
22 1 Antoine Lubineau
23 15 Antoine Lubineau
h3. Installation
24 15 Antoine Lubineau
25 15 Antoine Lubineau
Rien à faire, @git-daemon(1)@ vient avec @git(1)@.
26 15 Antoine Lubineau
27 15 Antoine Lubineau
h3. Configuration
28 15 Antoine Lubineau
29 15 Antoine Lubineau
La configuration de @git-daemon@ se fait sous Debian dans @/etc/default/git-daemon@.
30 15 Antoine Lubineau
@git-daemon(1)@ peut être lancé avec l’option @--export-all@, mais c’est peu recommandé si on ne veut pas donner un accès en lecture à tous. On préférera créer dans chaque dépôt à exporter le fichier @git-daemon-export-ok@.
31 14 Antoine Lubineau
32 4 Antoine Lubineau
h2. "cgit":http://hjemli.net/git/cgit/
33 4 Antoine Lubineau
34 4 Antoine Lubineau
h3. Installation
35 2 Antoine Lubineau
36 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).
37 1 Antoine Lubineau
<pre>
38 8 Antoine Lubineau
wget http://hjemli.net/git/cgit/snapshot/cgit-0.9.0.2.tar.bz2
39 8 Antoine Lubineau
wget http://arch.p5n.pp.ru/~sergej/dl/2011/git-1.7.4.tar.bz2
40 8 Antoine Lubineau
tar xf cgit-0.9.0.2.tar.bz2
41 8 Antoine Lubineau
cd cgit-0.9.0.2
42 8 Antoine Lubineau
tar xf -C git ../git-1.7.4.tar.bz2
43 1 Antoine Lubineau
</pre>
44 1 Antoine Lubineau
45 8 Antoine Lubineau
On peut modifier le @Makefile@ en mettant
46 8 Antoine Lubineau
<pre>CGIT_SCRIPT_PATH = /var/www</pre>
47 8 Antoine Lubineau
et
48 8 Antoine Lubineau
<pre>prefix = /usr/local/cgit</pre>
49 4 Antoine Lubineau
50 9 Antoine Lubineau
Ensuite :
51 9 Antoine Lubineau
<pre>
52 9 Antoine Lubineau
make
53 1 Antoine Lubineau
make install
54 1 Antoine Lubineau
</pre>
55 9 Antoine Lubineau
56 10 Antoine Lubineau
h3. Configuration de cgit
57 1 Antoine Lubineau
58 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@ :
59 12 Antoine Lubineau
<pre>
60 12 Antoine Lubineau
repo    testing
61 12 Antoine Lubineau
        RW+     =   pipo
62 12 Antoine Lubineau
        R       =   gitweb
63 12 Antoine Lubineau
</pre>
64 10 Antoine Lubineau
65 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 ».
66 13 Antoine Lubineau
67 10 Antoine Lubineau
La configuration de @cgit@ se trouve dans @cgitrc(5)@ :
68 1 Antoine Lubineau
<pre>
69 10 Antoine Lubineau
virtual-root=/
70 10 Antoine Lubineau
project-list=/home/git/projects.list
71 10 Antoine Lubineau
scan-path=/home/git/repositories/
72 10 Antoine Lubineau
</pre>
73 10 Antoine Lubineau
74 10 Antoine Lubineau
h4. Configuration d’Apache
75 10 Antoine Lubineau
76 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@ :
77 10 Antoine Lubineau
<pre>
78 6 Antoine Lubineau
usermod -aG git www-data
79 1 Antoine Lubineau
</pre>
80 1 Antoine Lubineau
81 11 Antoine Lubineau
Dans @~git/.gitolite.rc@, changer
82 1 Antoine Lubineau
<pre>
83 1 Antoine Lubineau
$REPO_UMASK = 0077;
84 1 Antoine Lubineau
</pre>
85 1 Antoine Lubineau
en
86 1 Antoine Lubineau
<pre>
87 1 Antoine Lubineau
$REPO_UMASK = 0027;
88 1 Antoine Lubineau
</pre>
89 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).
90 1 Antoine Lubineau
91 10 Antoine Lubineau
À mettre dans un _virtual host_ d’Apache :
92 1 Antoine Lubineau
<pre>
93 10 Antoine Lubineau
        DocumentRoot /var/www
94 10 Antoine Lubineau
        <Directory /var/www/>
95 10 Antoine Lubineau
                Addhandler cgi-script .cgi
96 10 Antoine Lubineau
                DirectoryIndex cgit.cgi
97 10 Antoine Lubineau
                Options +FollowSymLinks +ExecCGI
98 10 Antoine Lubineau
                AllowOverride None
99 10 Antoine Lubineau
                Order allow,deny
100 10 Antoine Lubineau
                allow from all
101 2 Antoine Lubineau
102 10 Antoine Lubineau
                RewriteEngine On
103 10 Antoine Lubineau
                RewriteBase /
104 10 Antoine Lubineau
                RewriteCond %{REQUEST_FILENAME} !-f
105 10 Antoine Lubineau
                RewriteCond %{REQUEST_FILENAME} !-d
106 10 Antoine Lubineau
                RewriteRule (.*) cgit.cgi/$1
107 10 Antoine Lubineau
                RewriteRule ^cgit.cgi$  cgit.cgi/
108 10 Antoine Lubineau
        </Directory>
109 10 Antoine Lubineau
</pre>