Git » Historique » Version 21
« Précédent -
Version 21/69
(diff) -
Suivant » -
Version actuelle
Antoine Lubineau, 22/02/2012 09:48
Installation et utilisation dâun serveur Git¶
Git est un gestionnaire de versions décentralisé, libre et développé en C. à noter la traduction française du Git community book.
La configuration se fera essentiellement au travers de 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).
Les explications qui suivent ont été mises en pratique sur le serveur git.tetaneutral.net
de Tetaneutral.net, donc avec une Debian Squeeze.
Gitolite¶
Installation¶
Configuration¶
Gitolite est très polyvalent, pour des usages poussés, se reporter à la documentation en ligne.
Une fois Gitolite installé, la configuration des dépôts et des utilisateurs se fait uniquement au travers du dépôtgitolite-admin.git
. Ce dépôt contient deux dossiers:
conf
qui va contenir les fichiers de configuration (le plus souvent un seul,gitolite.conf
)â¯;keydir
, qui va stocker les clés publiques SSH des utilisateurs.
Example de configurationâ¯:
repo testing RW+ = @all
Dans cet example, tous les utilisateurs ayant une clé dans le dépôt gitolite-admin
ont tous les droits sur le dépôt testing
.
Pour mettre à jour cette configuration, il suffit de la commiter et de la pusher, Gitolite appliquera les changements instantanément.
Ajouter un utilisateur¶
Il suffit dâajouter sa clé publique dans le dossier keydir
, en la nommant soit user.pub
, soit user@machine.pub
, ce qui permet dâavoir plusieurs clés pour un même utilisateur. On peut avoir des sous-dossier dans keydir
, câest sans incidence sur le nommage.
Dans la configuration de Gitolite, lâutilisateur est désigné par user
, et on peut faire des groupesâ¯:
@mongroupe = user1 user2
Et ensuite on peut donner des droits au groupeâ¯:
repo testing R = @mongroupe user3
Le droit de lecture sâapplique donc Ã
user1
, user2
et user3
.
Créer un dépôt¶
Il suffit de créer la ligne
repo monrepo
et de préférence dây ajouter des utilisateurs :)
git-daemon¶
Installation¶
Rien à faire, git-daemon(1)
vient avec git(1)
.
Configuration¶
La configuration de git-daemon
se fait sous Debian dans /etc/default/git-daemon
.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
.
cgit¶
Installation¶
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).
wget http://hjemli.net/git/cgit/snapshot/cgit-0.9.0.2.tar.bz2 wget http://arch.p5n.pp.ru/~sergej/dl/2011/git-1.7.4.tar.bz2 tar xf cgit-0.9.0.2.tar.bz2 cd cgit-0.9.0.2 tar xf -C git ../git-1.7.4.tar.bz2
On peut modifier le Makefile
en mettant
CGIT_SCRIPT_PATH = /var/www
et
prefix = /usr/local/cgit
Ensuiteâ¯:
make make install
Configuration de cgit¶
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
:
repo testing RW+ = pipo R = gitweb
Pour spécifier le propriétaire et la description dâun dépôt, voir le manuel de gitolite, section «â¯specifying gitweb and daemon accessâ¯Â».
La configuration de cgit
se trouve dans cgitrc(5)
:
virtual-root=/ project-list=/home/git/projects.list scan-path=~git/repositories/ snapshots=tar.gz tar.bz2 enable-commit-graph=1 enable-tree-linenumbers=1 enable-index-links=1 enable-log-filecount=1 enable-log-linecount=1 max-stats=quarter clone-prefix=http://git.tetaneutral.net git://git.tetaneutral.net
Configuration dâApache¶
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
:
usermod -aG git www-data
Dans ~git/.gitolite.rc
, changer
$REPO_UMASK = 0077;
en
$REPO_UMASK = 0027;
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).
à mettre dans un virtual host dâApacheâ¯:
DocumentRoot /var/www <Directory /var/www/> Addhandler cgi-script .cgi DirectoryIndex cgit.cgi Options +FollowSymLinks +ExecCGI AllowOverride None Order allow,deny allow from all RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) cgit.cgi/$1 RewriteRule ^cgit.cgi$ cgit.cgi/ </Directory>