Note de lecture : Pragmatic Version Control, using Git, par Travis Swicegood

Note 4 ; Informatif, mais pas passionnant.

Git, depuis son apparition est rapidement devenu le standard de fait de la gestion de version. Après avoir commis la gestion de version pragmatique avec CVS puis Subversion au début des années 2000, il devenait évident de proposer l’ouvrage équivalent pour Git. Équivalent il l’est car, comme nous allons le voir, il s’agit essentiellement d’une transposition du même texte au monde Git.

Le livre est plutôt court, avec 150 pages, mais découpé en petits chapitres, puisqu’il en compte 11, regroupés en 3 parties. La première partie est consacrée à l’installation et à la mise en œuvre initiale de Git. Le premier chapitre, c’est le tour du propriétaire. On y retrouve les concepts de base de la gestion de version, correctement actualisés par rapport à Git, mais sans exposer ses particularités outre mesure. Un bon chapitre pour les débutants sur la gestion de version, mais qui apporte peu pour les autres. Le second chapitre évoque l’installation et la configuration de base de Git. C’est vraiment du pas à pas pour différents systèmes d’exploitation, pas la peine de s’attarder. Avec le 3ème chapitre qui referme cette première partie, cela devient plus sérieux : il s’agit de créer un projet. En fait, on y fait même plus que cela : on y ajoute des fichiers et opérons quelques commandes de base. Le livre commence vraiment avec ce chapitre.

La seconde partie évoque l’utilisation de Git au quotidien. C’est la partie la plus importante de l’ouvrage, avec 6 chapitres sur 90 pages. Le chapitre 4 ouvre le bal avec les commandes de base, en allant plus loin que ce que nous avons vu au chapitre 3, c’est à dire créer de nouvelles versions, des branches, supprimer et renommer. Bref, tout ce que l’on peut faire individuellement sur un fichier. C’est bien écrit et décomposé : le débutant trouvera son bonheur pour bien débuter. La gestion des branches est un sujet qui arrive très vite, et c’est abordé au chapitre 5. De mon point de vue, sans couvrir toutes les possibilités, on va plus loin que les besoins quotidiens, avec le cherry picking et le renommage de branches. Le « merge manuel » est même abordé ! Étonnement, il n’y a pas trace du rebase !

Nous arrivons au chapitre 6 qui adresse ce que l’on peut faire avec l’historique des changements. Même s’il reste des aspects avancés qui ne sont pas passés en revue, ce chapitre adresse de nombreux aspects, depuis le commit et l’abandon de modification, jusqu’à la réécriture d’historique, le split de changements et bien d’autres choses. En fait, il aurait préférable à mon avais d’ne faire deux chapitres, l’un étant destiné aux usages de tous les jours. Hélas les deux niveaux d’utilisation ne sont pas aussi bien séparés au sein du chapitre. Dommage. Le chapitre 8 est plus court et adresse l’utilisation de repository distants. En gros, ce que nous faisons dans Github. Le sujet m’apparait à cheval avec l’administration car il y est question de configuration de protocole.

C’est l’organisation du repo qui est au programme du chapitre 8. Il est un peu déroutant. On commence doucement par la gestion des tags, puis des branches de releases (horreur !). Vient ensuite la question du multi-projet, et la surprise : un peu de littérature, mais pas vraiment de mode opératoire. La fin du chapitre traitant de la gestion des repositories externe s’avère heureusement moins décevante. Cette seconde partie se conclut sur des usages avancés regroupés au chapitre 9. Nous allons y trouver le clone et l’export de repo et aussi la grande magie de Git : le bisect ! La surprise est pour moi d’enfin trouver ici le rebase qui est pour moi une fonctionnalité de base d’utilisation des branches, qui doit précéder un merge…

La dernière partie du livre est consacrée à l’administration. Elle comporte 2 chapitres sur une trentaine de pages. Le chapitre 10 s’intéresse à la migration vers Git, principalement depuis SVN. Si le sujet a pu être d’actualité, la synchro SVN-Git n’a jamais vraiment été une bonne idée, et cette question qui se posait au moment où l’ouvrage était écrit a disparu aujourd’hui. Le livre se referme sur un chapitre 11 consacré à Gitosis. C’est un sujet qui m’apparait franchement hors sujet et que je vais mettre sur le compte de la passion de l’auteur pour cet outil

L’ouvrage a tout à fait l’allure d’un livre de commande. Alors certes on est initié de manière progressive aux commandes Git. Certes, le style est pédagogique et l’on a là un tutorial plutôt bien fait. Mais il manque à ce livre la petite plus-value liée au savoir-faire de l’auteur : comment utiliser efficacement plusieurs branches, quelles sont les stratégies possibles d’intégration et de partage de branche.
Bref, on y explique l’outil mais on ne montre guère comment le mettre en œuvre sur un réel projet. Un texte utile pour s’initier aux commandes, mais pas pour réfléchir à une stratégie de mise en œuvre.

Référence complète : Pragmatic Version Control, using Git – Travis Swicegood – The Pragmatic Bookshelf 2008 – ISBN : 978-1-934356-15-9

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.