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