Bazaar est un gestionnaire de version. L’un de ses avantages est qu’il permet d’utiliser les protocoles ssh ou ftp, ce qui signifie qu’il n’est pas nécessaire de monter un « serveur » bazaar pour l’utiliser; il suffit d’un serveur où vous pouvez vous connecter en ssh.
Classement des dossiers
L’organisation des dossiers est laissée à votre goût, mais pour simplifier les explications, voici l’organisation que nous allons adopter sur le serveur:
- Un dossier à la racine nommé bzr qui contiendra les divers projets à versionner
- Un dossier par projet dans le dossier /bzr (projet1 et projet2 )
- Les droits en lecture/écriture pour les membres du groupe projets sur le dossier /bzr (récursivement)
addgroup projets # ajout d'un groupe projets adduser manu projets # ajout de l'utilisateur au groupe projets mkdir -p /bzr/projet1 # création du dossier du premier projet mkdir -p /bzr/projet2 # création du dossier du deuxième projet chgrp -R projets /bzr # attribution du groupe projet à tous les fichiers du répertoire /bzr chmod -R g+rw /bzr # attribution des droits en lecture/écriture à tous les fichiers pour les membres du groupe projets |
Il n’est pas nécessaire d’installer bazaar sur le serveur, mais il est nécessaire que l’accès par ssh fonctionne, avec ou sans mot de passe.
Sur les clients
Mise en place du projet sur le serveur
Ce sont les clients (qui vont modifier le code des projets) qui doivent installer le logiciel bazaar
apt-get install bzr python-paramiko |
Les préférences de bazaar (limitées) se trouvent dans Système/Préférences/Bazaar preferences
Ce sont eux, aussi, qui vont initier le versionning, à l’endroit qui leur va bien:
mkdir ~/projets mv ~/Bureau/monprojet ~/projets # déplacement des fichiers du prototype dans les projets cd ~/projets/monprojet bzr init # initialisation du versionning du projet bzr add * # ajout de tous les fichiers (récursif) au versionning bzr commit -m "Création" # prise en compte des modifications avec le commentaire "Création" bzr push sftp://manu@server/bzr/projet1 --use-existing-dir # envoi de la version du projet sur le serveur en utilisant les répertoires créés plus haut. |
Récupération des fichiers sur un autre client
mkdir ~/beauprojet # création du dossier qui va accueillir le projet cd ~/beauprojet bzr init # initialisation du dossier au versionning bzr merge sftp://toto@server/bzr/projet1/ # intégration des fichiers de "monprojet" dans le dossier "beauprojet" dans lequel on se trouve |
Chacun des clients possède maintenant les fichiers sur lesquels effectuer les développements
Codage!
Les clients vont effectuer les modifications sur les documents. Après chaque modification (enfin, chaque fin de bloc de modification) ou avant l’envoi des fichiers modifiés, il faudra effectuer la commande suivante (qu’ils aient décidé ou non d’envoyer les fichiers sur le serveur. Les commit peuvent être fait hors connexion.):
bzr commit -m "message" |
qui permet de prendre en compte les modifications effectuées dans le versionning et, accessoirement, de revenir à une version antérieure.
Il suffit ensuite « d’assembler » les fichiers modifiés avec ceux du serveur, que ceux ci aient été modifiés ou non par une autre personne:
bzr merge sftp://toto@server/bzr/projet1/ |
Enfin, les fichiers « finaux » sont envoyés sur le serveur afin d’être disponibles pour tous les développeurs:
bzr push sftp://toto@server/bzr/projet1/ |
A retenir
- Il ne suffit pas d’ajouter un fichier/dossier au répertoire du projet pour qu’il soit pris en compte. Il faut le faire manuellement avec bzr add lefichier
- Pour supprimer un fichier, il faut utiliser bzr remove lefichier
- la commande bzr status permet de savoir l’état des fichier (plus exactement, du versionning)
- La commande bzr log permet de voir le log des changements avec les commentaires
- la commande bzr conflicts affiche les versions de fichiers en conflits
- La commande bzr resolve lefichier permet de résoudre les conflits dans le fichier lefichier
- Le manuel de bzr donne plein d’informations et de commandes utilisables
Interface graphique
Il existe une interface graphique pour bazaar nommée olive (paquet bzr-gtk) que je n’ai pas réussi à utiliser: impossible de comprendre les messages d’erreur (pas parlant) et pas trouvé de configuration à effectuer (ni dans le programme, ni dans les fichiers de configuration).
Pas grave, je suis un adepte de la ligne de commande.