Git
Git est un système open source de contrôle de version distribuée développé à l'origine par Linus Torvalds pour soutenir le développement du noyau Linux. Chaque répertoire de travail Git est un dépôt à part entière avec l'historique complet et la traçabilité des fonctionnalités de toutes les versions, indépendant de l'accès au réseau ou d'un serveur central.
Installation
Le système de contrôle de version git est installé avec la commande suivante
sudo apt install git
Configuration
Chaque utilisateur de git devrait d'abord se présenter à git, en exécutant ces deux commandes :
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 then 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 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. If you have not yet configured an SSH key, refer to Clés SSH
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:
sortie 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