Développement

Dépôt de code: quelle solution choisir?

| mise à jour
par Frédéric Condolo, Valiantys Suisse.

Simplicité, performance, sécurité, coût, autant de critères qui semblent justifier à chaque fois un choix différent pour le dépôt de code. Les experts se focalisent souvent sur des points trop techniques pour se faire une idée claire. Le but de ces lignes est de catégoriser diverses solutions pour donner les repères nécessaires à un bon arbitrage.

Pour commencer, il faut séparer l’offre en deux catégories: la première regroupe les technologies d’archivage dont le rôle est de stocker le code source et d’en gérer les versions (historique, branches). Ces technologies ayant une interface souvent aride, on a vu émerger une seconde catégorie de produits dont le rôle est d’apporter une interface utilisateur simple et intuitive aux technologies d’archivage.

Le succès grandissant de l’archivage décentralisé

On peut distinguer deux grandes familles de technologies d’archivage: les dépôts centralisés dont le porte-drapeau est SVN, et les dépôts décentralisés dont le plus connu est Git. SVN propose un serveur central où l’ensemble des données sont stockées. Les utilisateurs conservent une copie locale des fichiers afin de pouvoir les modifier avant de les redéposer sur le serveur central. C’est un modèle comparable à Dropbox, dont les vertus sont la simplicité et la robustesse. Git propose quant à lui un mécanisme dépourvu de serveur central, où chaque utilisateur dispose sur son disque dur de l’ensemble de l’historique du projet, et où par conséquent chaque collaborateur est un serveur potentiel. Les données sont synchronisées entre utilisateurs par une mécanique de fusion de branches. Ce principe peut s’avérer utile dans beaucoup de situations, notamment à chaque fois qu’un utilisateur ne peut pas se connecter à son serveur central.

Si, par exemple, un développeur utilisant SVN travaille dans le train ou dans un hôtel au wifi capricieux, il lui est impossible d’archiver son code ou de revenir trois heures en arrière pour tracer une erreur. L’architecture de Git permet en revanche de gérer ce genre de situation, car on peut archiver, dupliquer et comparer des versions sur son disque dur. Une fois une bonne connexion retrouvée, le développeur peut synchroniser sa base locale avec les bases des autres développeurs et repartir sur un tronc commun. En termes de performances, Git est également reconnu comme étant le plus rapide et sa base de données consomme généralement moins d’espace de stockage que les solutions concurrentes. On comprend alors mieux l’engouement pour Git, notamment dans les projets Open Source qui impliquent souvent des équipes éclatées sans locaux propres.

Le coût de la puissance

Malheureusement, les avantages de Git ont une contrepartie: il est infiniment plus difficile à comprendre et à manœuvrer que SVN. C’est là qu’entre en scène la deuxième catégorie de produits évoquée plus haut : les outils et wrappers qui vont simplifier l’utilisation des technologies d’archivage. SVN dispose de la meilleure bibliothèque d’outils gratuits, dont le célèbre Tortoise qui permet de gérer ses fichiers en un clic de souris directement depuis l’explorateur de fichiers de Windows ou Mac OS. Git propose également une série d’outils gratuits, mais qui restent très compliqués à utiliser si on veut en exploiter pleinement la puissance. Il n’en fallait pas plus pour que fleurissent des solutions payantes pour Git, dont les plus connues sont Github et Stash. Ces produits ont réussi à offrir des interfaces aussi simples à manipuler que SVN, mais avec des fonctionnalités avancées. Une des plus intéressantes est la pull request qui permet de demander à ses pairs de valider une modification du code avant de l’intégrer au tronc commun (code review). Chacun des pairs peut voir les modifications apportées à chaque fichier et les commenter dans un forum ad-hoc afin d’en débattre avec l’auteur et les autres développeurs. On peut exiger qu’une modification soit approuvée par un ou plusieurs collaborateurs pour que le système autorise son intégration dans le tronc commun. Stash propose même une fonctionnalité de suggestion automatique du meilleur collaborateur pour faire la revue de code (en se basant sur qui a écrit les lignes qui ont été modifiées).

Parcourir l’ensemble des offres sort du cadre de cet article, d’autant que les extensions tendent à gommer les différences, et des hybrides comme Bazaar et git-svn brouillent un peu plus les pistes en proposant de reprendre le meilleur des deux mondes. Il n’existe pas aujourd’hui de solution supérieure aux autres en tous points, c’est la culture d’entreprise, les besoins et le budget qui déterminent avant tout la décision finale. Cependant, la progression du nomadisme, des équipes décentralisées, et la culture des jeunes diplômés donnent aujourd’hui l’avantage aux technologies de type Git.

Kommentare

« Plus