Mercurial pour nous les nuls, leçon 1 : version, revision

Index des leçons :

  1. Leçon 1 : la gestion de version
  2. Leçon 2 : qu’est-ce qu’un dépôt ?
  3. Leçon 3 : les logiciels ”clients”
  4. Leçon 4 : création d’un dépôt
  5. Leçon 5 : enregistrement de révision
  6. Leçon 6 : synchronisation de dépôts, mise à jour du répertoire de travail
  7. Leçon 7 : identifier les différences
  8. Leçon 8 : la gestion des branches
  9. Leçon 9 : la fusion de branche
  10. Leçon 10 : retour vers le passé
  11. Leçon 11 : patch et collaboration indirecte

Depuis quelques jours nous testons avec plus ou moins de bonheur un nouveau système de gestion de version, Mercurial. Depuis longtemps en effet nous utilisions Subversion, svn pour les intimes, pour le développement de Dotclear, mais pour permettre un peu plus de souplesse dans la gestion des contributions multiples il a été décidé d’expérimenter un autre système. Arrivé à ce point de la lecture, deux cas se présentent :

  1. Vous n’avez rien compris aux deux phrases qui débutent ce billet, mais parce que vous ne voulez pas me froisser vous avez fait l’effort, louable, de lire encore jusqu’ici.
  2. Vous attendez la suite avec un petit air entendu du genre « oui, oui, encore un truc qui me concerne pas, j’ai déjà fait le tour de tout ça ! » et vous vous apprêtez à retourner à votre éditeur de code favori[1].

Vous comprendrez donc que je ne m’adresserai ici qu’aux ceussent qui se sont reconnus dans la première proposition, ou ceux qui curieux souhaiteraient tout de même glaner ici ou là une astuce ou une info qu’ils auraient laissé passer, sait-on jamais.

Je vous propose donc, à partir d’aujourd’hui, de débroussailler ces notions jusqu’à une compréhension suffisante pour être capable de participer au développement. Vous serez alors en mesure de proposer des modifications, des corrections, voire même de nouvelles fonctionnalités à apporter à notre cher projet.

Commençons sans plus attendre par la première notion.

La gestion de version

La gestion de version désigne ici un système qui permet de conserver (tout) l’historique des modifications apportées à un fichier ou à un dossier. Par modification j’entends la réelle modification du contenu du fichier, mais aussi, lorsqu’il s’agit d’un dossier, d’un ajout ou d’une suppression d’un fichier ou d’un dossier.

Quel est l’intérêt de conserver l’historique de toutes les modifications décrites ci-dessus ? Eh bien cela permet de se tromper sans risques. Tout simplement. Imaginez que vous modifiez un fichier et qu’après quelques tests vous vous aperceviez que ce que vous avez codé — autre façon de dire écrire avec une syntaxe et une grammaire particulière et souvent assez stricte définie par le langage utilisé, PHP, javascript, HTML et CSS en ce qui nous concerne — ne fonctionne pas du tout. Il suffit alors de revenir à l’étape précédente enregistrée, ce qu’on appelle communément une révision, pour retrouver le dit fichier dans son état initial.

Ce que je viens de décrire pour la modification d’un fichier est également valable pour n’importe quel type de fichier. On peut tout à fait gérer de cette manière les différentes versions d’une image, d’une vidéo ou de tout autre format de fichier. Nous verrons également que quelques outils existent pour identifier les différences apportées entre deux révisions d’un fichier.

Ce que je viens d’expliquer ici est le principal avantage d’un système de gestion de version, mais pas le seul, nous le verrons après. Parmi les systèmes de gestion de version nous avons Subversion et Mercurial. D’autres existent (Git, Visual Source Safe, …) , certains beaucoup plus vieux comme CVS, mais je n’en parlerai pas ici. Tous ces systèmes ont des fonctionnalités et des usages bien spécifiques, mais tous remplissent à minima la gestion de l’historique de modification décrit plus haut.

La gestion de version est fréquemment utilisée dans les projets de développements logiciels, mais peut tout à fait l’être pour l’écriture d’un ouvrage sur le macramé vaudou ou pour le design du site web du cousin marabout sorcier guérisseur ou que sais-je encore.

Conclusion

Ce billet introduit une série qui ne sera sûrement pas aussi austère, vous connaissez mon goût pour les schémas et les illustrations. En attendant, posez d’ores et déjà toutes les questions que vous voudrez dans les commentaires ci-dessous. J’y répondrai tôt ou tard, en fonction des notions qui auront été ou devront être abordées.

Glossaire

Version : état d’un fichier à un moment donné.

Révision : ensemble des états enregistrés des fichiers et dossiers à un moment donné.

Pour en savoir plus

Quelques liens si vous voulez en savoir plus en attendant la prochaine leçon (vous pouvez zapper les deux derniers liens pour l’instant) :

PS : Si certains passages ne vous semblent pas clairs, si vous avez une formulation plus compréhensible, n’hésitez pas à me le dire, je modifierai ce billet et les suivants en conséquence. L’objectif est de faire un tuto compréhensible par le plus grand nombre. D’autre part, si vous avez connaissance d’un tuto identique à celui que je me propose de développer ici, n’hésitez pas à me le signaler, ce serait idiot que je refasse le même travail qu’un autre !


Leçon suivante

Notes

[1] Textmate est à mon très humble avis un excellent choix sur Mac OS X, bien que les plus purs des geeks ne connaissent rien d’autre que Vim — un éditeur de texte qui fait pareil mais en beaucoup moins intuitif et facile à maitriser, allez comprendre !

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/7044

Haut de page