Utilisez bazaar avec Launchpad avec un workflow décentralisé
Mais c'est quoi ce bazar? me direz vous ... eh oui, vous ne le connaissez peut-être pas tous, mais Bazaar est un système de gestion de version libre et sponsorisé par Canonical Ltd. C'est un peu comme CVS, Subversion ou Git, mais en différent. Je ne peux malheureusement pas vous faire une comparaison objective de tous les systèmes de versionning n'ayant pas encore eu l'occasion de les utiliser tous à leurs capacités maximales. Mais aujourd'hui je découvre bazaar et je trouve qu'il a pas mal d'attouts. Tout d'abord, il faut dire qu'il appartient à la catégorie des systèmes de gestion de version décentralisée, ainsi chaque copie de travail est un dépôt complet et celui-ci contient tout l'historique. Ceci permet donc une gestion plus facile qu'avec d'autres tel que Subversion (par exemple) qui nécessite l'utilisation d'un serveur central.
Les développements de bazaar se focalisent sur la facilité d'utilisation et la flexibilité. Bazaar repose donc sur un jeu de commande très restreint. Il est aussi possible de l'utiliser avec différents schémas de développements (chaque développeur dispose de sa propre branche, les développeurs disposent d'un dépôt commun, …). Bazaar est développé dans le langage Python. Il existe déjà plusieurs outils qui permettent une utilisation aisée de Bazaar, n'hésitez pas à vous renseigner sur leur site pour en savoir plus.
Etant donné que je me suis inscrit sur le Launchpad et que j'ai décidé de voir ce qu'il avait dans le ventre je me suis donc mis à utiliser Bazaar et à le tester. Voici donc un petit tutorial que j'ai écrit pour ne pas oublier comment s'y prendre par rapport au workflow choisi pour mon projet. En espérant qu'il puisse aussi servir à d'autres. Et peut-être qu'avec mon expérience et mon utilisation plus fréquente de Bazaar j'adapterais et j'améliorerais ce workflow.
Installer bazaar
Soit en téléchargant les sources sur le site http://bazaar-vcs.org soit en installant la version associée à votre distribution.
configurer bazaar :
Lancez la commande suivante et regardez si la valeur retournée est correcte :
$ bzr whoami
Si ça n'est pas le cas, vous pouvez configurer cette valeur avec la commande :
$ bzr whoami "Votre nom <votre@email.com>"
Si vous utilisez Launchpad pour un projet, vous allez aussi devoir configurer votre nom d'utilisateur launchpad afin de pouvoir vous connecter. Le nom d'utilisateur launchpad est le nom d'utilisateur unique que vous utilisez, pas votre nom. Pour configurer bazaar avec plus de précision, vous pouvez directement modifier le contenu du fichier ~/.bazaar/bazaar.conf :
[DEFAULT] email = Gregoire de Hemptinne <mon@email.be> editor = /usr/bin/vim check_signatures = check-available create_signatures = when-required launchpad_username = greg-theclimber
Afin de pouvoir mettre des fichiers sur Launchpad, il vous faut lui donner une clé publique SSH de type DSA . Pour la petite histoire, ceci est dû au fait que Launchpad utilise le protocole SFTP qui permet encryptage de la communication . Votre clé SSH vous identifie sur un ordinateur. ce qui veut dire qu’elle ne sera valide que sur celui ci. si vous en changer, il vous faudra en générer encore une. Faites donc (sur Ubuntu) :
$ ssh-keygen -t dsa
Gardez l’emplacement par défaut, puis choisir un mot de passe. Copier le contenu du fichier /home/monlogin/.ssh/id_dsa.pub qui doit être une longue ligne. allez dans la section Update SSH key de votre profile sur Launchpad et collez ça.
Après l’import, vous pouvez communiquez avec Launchpad en SFTP .
Récupérer la dernière version du projet
Maintenant que notre session est configurée, on va récupérer la dernière version du code pour commencer à bosser dessus. Lancez la commande suivante qui va créer une branche de dévelopement :
$ bzr branch lp:<VotreProjet> /home/xxx/votre/repertoire/de/dev
Note : l'acronyme 'lp' est un raccourci pour launchpad et ne fonctione que pour ce dernier, sinon vous devez mettre la ligne sftp compllète. Vous pouvez aussi le faire avec la ligne complète :
$ bzr branch bzr+ssh://bazaar.launchpad.net/<NomProjet>/ /home/xxx/votre/repertoire/de/dev
Ca y'est, le code est téléchargé et vous pouvez commencer à travailler dessus.
Travailler sur le code
Au fur et à mesure que vous travaillez sur le code, il peut être judicieux de faire des commits. Les commits sont en générals organisés par "thème". On ne touche pas directement à tout le code dans un commit, mais chaque commit corrige un point bien précis.
Ceci permet donc lorsqu'on décide de faire un commit de l'associer à un bug bien particulier. Si ce bug est sur launchpad, on peut l'associer automatiquement grâce à la commande :
$ bzr commit --fixes lp:1234 -m "..."
Attention aussi à toujours essayer de mettre un message dans le commit afin de permettre une meilleure visibilité dans les logs pour une tracabilité postérieure. De cette manière on peut retrouver facilement quel commit corrige quoi ou correspond à quoi et ainsi retrouver des infos utiles.
Partager le code
Une fois que vous avez terminé de travailler sur le code, vous allez devoir le partager aux autres pour qu'il puisse être mergé sur l'arbre de dévelopement. Pour ça vous allez créer une branche sur votre compte avec votre code. Allez donc dans votre répertoire de travail et executez la commande suivante :
$ bzr push lp:~<NomUtilisateur>/<NomProjet>/<NomBranche>
Une fois que ceci est fait, votre branche est désormais sur le serveur launchpad et disponible. Allez donc sur votre profil launchpad pour voir cette branche https://code.launchpad.net/~<NomUtilisateur> et cliquer sur la branche fraichement créee.
Si cette branche ne nécessite plus aucune modification de votre part et que vous pensez qu'elle peut être mise dans le code final, vous pouvez cliquer sur "Propose for merging into another branch" et vous choisissez la branche principale du projet.
Lorsque le mainteneur du projet passera par là il pourra donc faire le merge et mettre en place le dernier code dans l'arbre de développement.