work in progress ====== Mise en place d'un système de contrôle de version GIT sous unbuntu server 10.10 ====== {{:infra:infra:git:git-logo.png|}} ===== Introduction ===== Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué sous la GNU GPL version 2. * Le site officiel de git est disponible à cette adresse : http://git-scm.com/ * Une trés bonne ressource documentaire sur git : http://progit.org/book/ ===== Objectifs ===== L'objectif de ce tutoriel est de mettre en place rapidement et simplement un serveur git décentralisé. Nous aurons la possibilité de : * parcourir les projets grâce à une interface web (gitweb) * cloner un projet public avec le protocole git (git-daemon) * cloner et travailler sur un projet de manière sécurisée (gitolite) Enfin nous verrons l'intégration de notre serveur avec redmine. ===== Installation de git, gitolite et gitweb===== C'est la partie la plus simple de ce tuto : aptitude install git-core gitolite gitweb ===== Utilisation au quotidien ===== ==== Administrer le serveur git ==== L'administration (attribution des droits, création des dépôts ....) se fait entièrement à distance. Il n'est plus besoin d'intervenir sur le serveur en lui même. C'est la magie de gitosis qui permet d'administrer le serveur git via un ... dépôt git. L'administrateur sera donc l'utilisateur dont on a utilisé la clé publique pour initialiser gitosis. Ce qui suit se passe intégralement sur le poste de travail et plus sur le serveur git === Récupération du dépôt gitosis-admin === git clone git@votreserveur:gitosis-admin.git && cd gitosis-admin cela nous donne l'arborescence suivante : `-- gitosis-admin |-- gitosis.conf `-- keydir `-- user@host.pub le répertoire keydir recevra les clé publique des utilisateurs autorisés a accéder aux dépôts le fichier gitosis.conf servira à configurer les acl et les dépots. === Ajouter un dépôt et un utilisateur autorisé à écrire dans ce dépôt === Cela est redoutablement simple ! * Nous devons tout d'abord récupérer la clé publique de l'utilisateur et la placer dans le répertoire keydir * Ensuite nous allons éditer le fichier gitosis.conf et rajouter une section décrivant le dépot [repo monprojet] description = description du projet owner = Propriétaire du dépot (informatif) * Ensuite nous définissons les droits de l'utilisateur sur ce dépôt [group monprojet] writable = monprojet members = user@host **writable** donne les droits d'écriture sur le dépôt **monprojet** **members** est une liste d'utilisateurs séparés par des espaces (doit correspondre au fichier clé publique placé précédemment dans le répertoire keydir sans l'extension .pub) Voila notre configuration est terminée. Il ne reste plus qu'a ajouter le fichier clé publique au dépot local git add keydir/user@host.pub git commit -am "Ajout du dépôt monprojet et autorisations pour user@host" Enfin on "pousse" la configuration vers le serveur git git push Pour l'administrateur c'est tout ! Voyons maintenant comment l'utilisateur va créer son dépot. === Création du dépot par l'utilisateur === Manipulations faites par l'utilisateur depuis son poste de travail L'utilisateur à donc fait sa demande à l'administrateur pour pouvoir héberger son dépôt sur le serveur git. Il doit maintenant initialiser son dépôt sur son poste de travail mkdir monprojet cd monprojet git init Il faut maintenant déclarer le dépôt distant git remote add origin git@monserveur:monprojet.git Enfin on pousse notre dépot vers le serveur git push origin master:refs/heads/master ===== Ressources en ligne ===== * [[http://progit.org/book/|PRO GIT]] : Un livre en ligne sur git et ses possibilités ! * [[http://eagain.net/gitweb/?p=gitosis.git;a=blob;f=README.rst| Gitosis README]] : Le fichier README de gitosis * [[http://git-scm.com/| Site officiel de GIT]]