Note : 6 ; “Best practices” et utilisation de CVS parfaitement intégrés.
Quand les Pragmatic Programmers » ont décidé d’ouvrir boutique en devenant éditeurs, ils ont commencé par publier des « starters kits » destinés à permettre l’utilisation d’outils labellisés « pragmatiques » avec les recettes agiles qui vont avec. Le roi de la montagne des gestionnaires de version était alors Subversion, mais CVS (qui nous intéresse aujourd’hui) était encore utilisé, tandis que Git n’était pas encore né. Peu de monde se souvient encore du successeur de RCS (dont encore moins de personnes se souviennent), et ce guide pratique va nous permettre de le maitriser au quotidien. Bien sûr aujourd’hui le texte a d’avantage un intérêt historique, voir archéologique.
L’ouvrage ne pèse gère lourd avec moins de 140 pages auxquelles il faut ajouter une quinzaine de pages d’annexes. Le tout est structuré en 10 chapitres. Le premier chapitre cueille bien tôt le développeur débutant pour lui faire appréhender l’intérêt d’un gestionnaire de version, au travers d’une courte histoire. Quelques pages qui ne seront utiles qu’au grand débutant. Le second chapitre attaque les choses sérieuses, avec les concepts gravitant autour de la gestion de configuration, et surtout les cas d’usage de ce type d’outil : branche de développement, bug fixes, conflits, etc. Le tout bien illustré et expliqué efficacement. Le tout reste générique, sans aborder les spécificités de CVS.
C’est au chapitre 3 que l’on attaque véritablement la prise en main de CVS, depuis l’installation, jusqu’au gestes de base évoqués au chapitre précédent, en passant par la configuration et la gestion de projet. Les lignes de commande sont développées et expliquées, comme on peut s’y attendre de ce type d’ouvrage. Ces 3 premiers chapitres étaient en quelque sorte l’introduction. Je passe sur le chapitre 4 qui est en quelque sorte le préambule du reste du livre.
Au chapitre 5, le texte va aborder plus en détail la gestion du repository. Il s’agit essentiellement de bien en comprendre la configuration : droit d’accès, configuration ssh, etc., plus que des questions d’usage au quotidien. L’usage au quotidien, c’est justement l’objet du chapitre 6, par ailleurs conséquent. C’est une approche « commande par commande » qui est privilégiée, plutôt que celle des patterns d’usage que j’aurais préférée. L’avantage de l’angle adopté par les auteurs est qu’elle passe en revue de manière systématique les capacités de l’outil pour les commandes de base.
Au chapitre 7, nous dépassons les commandes de base pour nous intéresser aux tags et aux branches. L’approche est en quelque sorte mixte, avec une introduction donnant le cadre d’usage, et le reste du chapitre en explication en profondeur des commandes. Le chapitre 8 fait le même travail sur la notion de projet. Il n’y a pas grand-chose à en dire, le chapitre est d’ailleurs assez court.
Le chapitre 9 nous fait découvrir les notions avancées de CVS : les modules, plus précisément les 3 types de modules qu’il supporte. Cela reste assez succinct, il s’agit surtout d’une découverte de cette notion qui ne servira pas quotidiennement et nécessitera d’autres lectures pour être bien maîtrisée. L’ouvrage se referme sur un chapitre 10 consacré à la gestion du code fournit par des tiers. On n’y aborde pas de nouvelles commandes, mais plutôt des recommandations d’usage pour traiter ce code de manière pertinente.
Le texte est résolument efficace, il est là pour nous aider à bien maîtriser les commandes de l’outil et pas seulement les utiliser sans comprendre. J’aurais préféré un texte d’avantage articulé sur cas d’usage, considérez plutôt le « Software Configuration Management Patterns » pour ce point de vue. Les 2 lectures ne sont d’ailleurs pas exclusives.
Référence complète : Pragmatic Version Control, using CVS – The Pragmatic Bookshelf 2003 – Andrew Hunt & David Thomas – ISBN: 0-9745140-0-4
