Index des leçons :
- Leçon 1 : la gestion de version
- Leçon 2 : qu’est-ce qu’un dépôt ?
- Leçon 3 : les logiciels ”clients”
- Leçon 4 : création d’un dépôt
- Leçon 5 : enregistrement de révision
- Leçon 6 : synchronisation de dépôts, mise à jour du répertoire de travail
- Leçon 7 : identifier les différences
- Leçon 8 : la gestion des branches
- Leçon 9 : la fusion de branche
- Leçon 10 : retour vers le passé
- Leçon 11 : patch et collaboration indirecte
Suite des leçons à propos de Mercurial. Après la leçon 1 sur ce qu’est la gestion de version, une leçon sur ce qu’est un dépôt ou repository en anglais.
Résumé des leçons précédentes
Nous avons vu que Mercurial est un système de gestion de version qui permet de conserver tout l’historique des fichiers et dossiers constituant un projet et ce quelle que soit la nature de ce projet. Nous avons abordé la notion de révision, qui représente l’état enregistré à un instant t de tout ce qui a été modifié sur le projet depuis la révision précédente.
Le dépôt ou repository
Mercurial conserve l’historique. C’est une bonne chose. Encore faut-il lui donner un peu d’espace pour conserver cet historique. Cela se fait dans un dépôt. Les systèmes de gestion de version comme Mercurial ou Subversion utilisent différents moyens pour stocker cet historique et surtout pour faire en sorte que celui-ci ne vienne pas perturber le travail en cours[1].
Mercurial, que je nommerai Hg dans la suite des leçons — les plus savants d’entre vous auront immédiatement fait le rapprochement entre le symbole chimique du mercure, hg, et le nom de ce système —, enregistre tout l’historique dans un seul endroit. À la racine de votre projet, c’est-à-dire dans le dossier qui contient tous les dossiers et fichiers qui le composent, et le nomme .hg
[2]
Pour illustrer cela, j’ai utilisé un logiciel client (ce sera l’objet de la leçon suivante) pour créer un dépôt Hg (Mercurial donc, si vous avez bien suivi) sur le disque dur de mon ordinateur. Pour ce faire j’ai uniquement indiqué l’endroit où serait stocké le dossier principal de mon projet. Voyons son contenu tel qu’on peut le voir normalement :
Comme vous pouvez le constater, le dossier depot
ne contient aucun élément, il est vide. Voyons maintenant avec un œil un peu plus acéré, et cette fois avec le terminal ou la console (la terminologie varie d’un système d’exploitation à un autre) ce qu’il contient réellement :
Deux éléments sont présents et ont été créés par Hg pour sa gestion interne. Le premier, .hg
, qui est un dossier, sert et servira à stocker tout l’historique de ce dépôt. Le second .hgignore
permet de définir une liste de fichiers et/ou de dossiers qui seront ignorés et donc non stockés dans l’historique. Nous verrons par la suite qu’il pourra y en avoir d’autres, toujours invisibles (leurs noms commenceront toujours par .hg
).
Allez, soyons un peu plus curieux et pour ne rien cacher, jetons un œil au contenu du dossier .hg
, mais je précise que ce sera la dernière fois que nous le ferons, seul Hg est censé s’en préoccuper :
Toute une série de fichiers et de dossiers, nécessaires et suffisants pour qu’Hg remplisse le rôle qu’on attend de lui. Si par mégarde vous supprimiez ce dossier alors vous perdriez l’intégralité de l’historique de votre projet ! Sachez simplement qu’il est vital pour Hg et qu’il ne faut pas y toucher.
Ce que je viens d’expliquer à propos du dépôt créé sur ma machine est en tout point valable pour un dépôt créé sur un serveur. L’avoir sur un serveur permet de partager ce dépôt avec d’autres contributeurs et ainsi de mettre en commun les développements qui y seront apportés. Seul l’endroit où sera stocké l’historique change.
Nous verrons dans la leçon suivante comment utiliser un logiciel client pour créer et faire vivre un dépôt local et distant (sur un serveur). Je vous parlerai également de Bitbucket qui est un serveur web offrant une plate-forme de gestion de dépôt Hg et que nous utilisons depuis peu pour le développement de Dotclear.
Conclusion
Un dépôt (ou repository en anglais) est un dossier contenant via des éléments masqués (leurs noms commencent par un .
) tout l’historique des modifications apportées au projet, soit l’intégralité de ses révisions.
Glossaire
Dépôt : Dossier de stockage de l’historique des révisions d’un projet.
Notes
[1] Avec Mercurial le dépôt local sert également d’espace de travail pour les développements. Cela peut paraître confus au premier abord, mais simplifie la gestion sur le disque dur. Nous y reviendrons.
[2] Habituellement les fichiers et dossiers débutant par un .
ne sont pas affichés par votre système d’exploitation (Windows, Linux, Mac OS X, …). C’est, je crois, un héritage des systèmes Unix.
1 De [SiMON] -
Je peux me tromper, mais il me semble que Windows ne considère pas les fichiers commençant pas un point comme des fichiers cachés. En fait, Windows n’autorise pas directement ces fichiers (ou du moins c’était encore le cas sous Vista) : tenter de renommer un fichier par un nom commençant par un point provoquera une erreur dans l’explorateur. Les programmes tiers peuvent en créer cela dit.
Pour la suite du cours, l’utilisation d’hg sera expliquée en mode graphique (TortoiseHG) ou bien en ligne de commandes ? Ou les deux ?
2 De Franck -
Ah, je ne savais pas pour Windows. Du coup je me demande comment c’est géré sous cet OS par TortoiseHg et consort. Va falloir que j’enquête un peu.
Étant donné que je développe sur Mac, les copies d’écran seront faites avec le client MacHg que j’utilise. L’idée n’est pas de faire un pas-à-pas d’utilisation de TortoiseHg ou autre, mais de faire comprendre les principes de base de l’utilisation de Mercurial. Cela dit les actions possibles sont souvent les mêmes et seule la terminologie peut varier un peu d’un OS à l’autre, et encore.
Quand aux lignes de commande, je peux éventuellement les indiquer en annexe des leçons, mais pas plus. Je ne souhaite pas surcharger le contenu des explications, déjà assez ardues à comprendre pour les néophytes, ce qui d’ailleurs explique le train de sénateur adopté ici.
3 De Franck -
Vérification faite TortoiseHg sous Windows utilise la même nomenclature de fichier et dossier (
.hg
,.hgignore
, …). Je conseille à tout ceux qui développent sous Windows de ne pas modifier, déplacer ou supprimer ceux-ci.Voir la documentation de TortoiseHg.
4 De [SiMON] -
Oui, les noms de fichiers sont les mêmes. Je disais juste qu’ils n’étaient pas “cachés” (hg ou TortoiseHG se chargent de les “cacher” à la façon Windows) et qu’il est impossible (du moins jusqu’à Vista, je ne sais pas pour Seven) d’en créer via l’explorateur Windows (toute personne ayant voulu créer un .htaccess sous Windows connaît bien cette limitation ;) ).
Et, au risque de passer pour un nerd en devenir, je trouve TortoiseHG (sous Ubuntu du moins) bien plus confus que les lignes de commande hg. L’absence d’interface unifiée (tout se faisant par le menu contextuel) et l’utilisation d’une localisation française avec laquelle il est parfois difficile de faire correspondre l’équivalent en ligne de commande m’a vite renvoyé à mon terminal pour ma part. Mais je ne suis pas forcément “l’utilisateur lambda”.
5 De [SiMON] -
Correction : hg ou TortoiseHG se chargent peut-être de les cacher à la façon Windows
(Je me suis relu pourtant.)
6 De Franck -
C’est vrai que mes quelques essais avec Tortoise, du temps où je développais encore sous Windows et tester un peu le système Subversion, m’avait laissé un goût de pas bien intégré, pas fini.
Cela dit j’aime avoir une vision un peu exhaustive de ce que je fais, de l’état d’un dépôt, etc. Tortoise et TortoiseHg (je suppose bien que je ne l’ai jamais testé dans cette version pour Mercurial) rajoutant, comme tu le précises, une couche sur l’explorateur de fichier de Windows n’est clairement pas au niveau des clients riches que j’ai pu utiliser ensuite (Versions et MacHg sur Mac OS X)