Phabricator – Partie 3

Phabricator – Partie 3

Cet article fait partie d’une série que je réalise sur l’outil Phabricator. Vous pourriez être intéressé de lire le premier article ici avant de vous lancer dans celui-ci ! Ce billet parle du flux de travail adéquat pour tout développeur intéressé dans l’utilisation de Phabricator. En effet, le progiciel apporte quelques fonctions qui agrémente les outils de versionning (comme Git ou SVN). Vous en serez probablement un peu déstabilisé, car le flux habituel est légèrement bouleversé, mais vous en comprendrez bien vite les avantages (nombreux !).

La vérité est dans les arcanes

Si vous avez l’habitude de développer à l’aide d’un outil de contrôle de version comme git, je ne vous apprendrai rien sur le workflow habituel de tout développeur. La séquence branch, work, add, commit, push doit vous être familière. Sous SVN et selon votre flux, cela devrait plus ressembler à: update, work, add, commit.

Et bien sachez que Phabricator introduit un nouveau joueur dans l’arène: arcanist. Arcanist est un outil permettant, entre autres, d’intégrer une nouvelle dimension à votre code: la revue de code. Oui, vous savez, cette obscure chose qui peut vite dégénérer en critique ouverte du code des autres, ou en « concours du plus beau code ». Si on prend sa facette positive, elle permet de s’assurer que le code envoyé dans le repository correspond aux règles de développement établies et d’instaurer une notion de qualité.

Seulement voilà, la revue de code se fait traditionnellement après que le développeur ait envoyé son code au repository. C’est légèrement « moins pire » si vous tirez avantage des branches, mais le mal est fait dans tous les cas. C’est là qu’Arcanist et Phabricator entre en jeu. Arcanist vous permet de créer des différentiels (oui, comme git diff ou svn diff) et de les envoyer à Phabricator en même temps que votre code.

Résultat ? Phabricator (qui garde votre code) va prendre en compte la modification contenue dans le différentiel, mais pas la mettre à disposition de tous les autres développeurs immédiatement. Le différentiel sera soumis à la revue de code, réalisée par des « auditeurs » pouvant être automatiquement affectés via des règles métier. Une fois la revue terminée, le développeur pourra pousser son code définitivement dans le repository.

Exemple pratique

Avec Git seulement:

$ git branch mon-fichier
$ vi monfichier.txt
$ git add monfichier.txt
$ git commit -m "Added $ monfichier to repo"
$ git push origin mon-fichier

Et là commencent les ennuis liés à la revue de code, car votre code est directement ajouté au repository. Certes, vous ne cassez pas tout, mais vous rendez la tâche moins intuitive.

Avec Git et Arcanist:

$ arc feature mon-fichier #crée une branche
$ vi monfichier.txt
$ git add monfichier.txt
$ arc diff
# un diff est créé, le repository est à jour mais
ne retournera pas la modification aux autres sans demande explicite

Et là commence la revue de code, sans impacter le travail des autres, ni le repository (le code est versionné, mais pas accessible par les autres développeurs.

Le mot de la fin

J’en suis conscient, cet article est loin d’être le plus détaillé qu’il soit, et vous devez encore avoir beaucoup de questions. Je n’ai cependant pas l’intention de m’étaler trop en longueur sur ce sujet qui pourrait me prendre encore une bonne dizaine de billets. Après avoir testé durant plusieurs semaines le produit, je ne pense pas avoir ne serait-ce qu’effleuré les possibilités offertes. J’espère cependant vous avoir fait découvrir (brièvement) un outil qui pourrait vous plaire, qui m’a énormément plu et qui pourrait bien devenir un de vos futurs « joujoux ». Mon seul conseil, si vous éprouvez maintenant un peu de curiosité à ce sujet, est de le tester par vous même et vous faire votre propre opinion (on n’est jamais aussi bien servi que par soi-même, après tout). Vous n’en serez pas déçu, et ça ne vous coûtera pas grand-chose. Vous pouvez même l’installer en local sur votre ordinateur.

Concernant Arcanist, je suis surpris (en bien) par toutes les possibilités de l’outil, bien que sa pertinence puisse probablement encore vous échapper. La relecture de ce billet ne m’a en effet pas satisfait dans le sens où il ne représente pas suffisamment combien Arcanist peut vous apporter. L’outil apparaît comme complet, touffu et flou; c’est très compliqué de le décrire, si bien que malgré plusieurs essais, je ne suis pas parvenu à rendre toute sa magie ici. Si vous faites l’effort de l’essayer, il n’en devient toutefois pas moins que votre compagnon fidèle dans la gestion de votre code, via des fonctions très utiles (il permet également d’envoyer/télécharger des fichiers ainsi que de vous faire une liste des tâches à réaliser). Je ne peux donc également que vous inciter à le tester si d’aventure vous vous lancez dans l’installation d’une instance Phabricator.

Je vous souhaite de bons tests !

Photo d’entête: communauté Phabricator, le logo et le nom du progiciel sont soumis au TradeMark.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.