Git
Git is an open source distributed version control system originally developped by Linus Torvalds to support the development of the linux kernel. Every Git working directory is a full-fledged repository with complete history and full version tracking capabilities, not dependent on network access or a central server.
Installation
Le système de contrôle de version git est installé avec la commande suivante
sudo apt-get install git
Configuration
Every git user should first introduce himself to git, by running these two commands:
git config --global user.email « vous@example.com » git config --global user.name « votre nom d'utilisateur »
Utilisation basique
The above is already sufficient to use git in a distributed and secure way, provided users have access to the machine assuming the server role via SSH. On the server machine, creating a new repository can be done with
git init --bare /chemin/vers/dépôt
This creates a bare repository, that cannot be used to edit files directly. If you would rather have a working copy of the contents of the repository on the server, ommit the --bare option.
Any client with ssh access to the machine can from then on clone the repository with
git clone utilisateur@hôte:/chemin/vers/dépôt
Once cloned to the client's machine, the client can edit files, then commit and share them with:
cd /chemin/vers/dépôt #(modifie des fichiers git commit -a # réalise tous les changements dans la version locale du dépôt git push origin master # Induit les changements sur la version serveur du dépôt
Installation d'un serveur gitolite
Alors que ce qui précède est suffisant pour créer, cloner et modifier les dépôts, les utilisateurs désirant installer git sur un serveur préfèreront davantage un fonctionnement tel un serveur de gestion de contrôle de source plus traditionnel, multi-utilisateurs et l’accès à la gestion des droits. La solution suggérée est d'installer gitolite avec la commande suivante :
sudo apt-get install gitolite
Configuration de gitolite
La configuration de gitolite est un peu différente que celle de la plupart des serveurs sur les systèmes comme Unix. À la place du fichier de configuration habituel dans /etc/, gitolite place sa configuration dans un dépôt git. La première étape pour configurer une nouvelle installation est donc de permettre l’accès au dépôt de configuration.
Tout d’abord, créons un utilisateur pour gitolite afin d'y accéder.
sudo adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
Now we want to let gitolite know about the repository administrator's public SSH key. This assumes that the current user is the repository administrator.
cp ~/.ssh/id_rsa.pub /tmp/$(whoami).pub
Passons sur l'utilisateur de git et importons la clé de l'administrateur dans gitolite.
sudo su - git gl-setup /tmp/*.pub
Gitolite will allow you to make initial changes to its configuration file during the setup process. You can now clone and modify the gitolite configuration repository from your administrator user (the user whose public SSH key you imported). Switch back to that user, then clone the configuration repository:
exit git clone git@$IP_ADDRESS:gitolite-admin.git cd gitolite-admin
L'administrateur gitolite contient deux sous-répertoires, « conf » et « keydir ». Les fichiers de configuration sont dans le répertoire conf, et le répertoire keydir contient la liste des clés publiques SSH utilisateur.
Gestion des utilisateurs et des dépôts gitolite
Adding new users to gitolite is simple: just obtain their public SSH key and add it to the keydir directory as $DESIRED_USER_NAME.pub. Note that the gitolite usernames don't have to match the system usernames - they are only used in the gitolite configuration file to manage access control. Similarly, users are deleted by deleting their public key file. After each change, do not forget to commit the changes to git, and push the changes back to the server with
git commit -a git push origin master
Les dépôts sont gerés en modifiant le fichier conf/gitolite.conf. La syntaxe est séparée par des espaces et spécifie simplement la liste des dépôts suivie par des règles d’accès. Ce qui suit est un exemple par défaut.
repo gitolite-admin RW+ = admin R = alice repo project1 RW+ = alice RW = bob R = denise
Utilisation de votre serveur
To use the newly created server, users have to have the gitolite admin import their public key into the gitolite configuration repository, they can then access any project they have access to with the following command:
git clone git@$IP_DU_SERVEUR:$NOM_DU_PROJET.git
Or add the server's project as a remote for an existing git repository:
git remote add gitolite git@$IP_DU_SERVEUR:$NOM_DU_PROJET.git