diff --git a/logiciels/cvs/index.tml b/logiciels/cvs/index.tml index 1a9ad3e..4c6cab3 100644 --- a/logiciels/cvs/index.tml +++ b/logiciels/cvs/index.tml @@ -10,14 +10,477 @@

Le contrôle de versions avec CVS

-

CVS est un logiciel Unix pour gérer différentes versions de beaucoup -de fichiers produits éventuellement par de multiples utilisateurs.

+

CVS est un logiciel Unix pour gérer différentes versions +de beaucoup de fichiers produits éventuellement par de multiples +utilisateurs.

Par exemple, les tuteurs informatique utilisent CVS pour gérer ce site.

+

Pourquoi CVS ?

+ +

L'enfer, c'est les autres

+ +

+Supposons par exemple que vous conceviez un mémoire de maîtrise en +collaboration avec un camarade, ou encore que vous écriviez un programme +informatique en collaboration avec une équipe de développeurs. Plusieurs +scénarii-catastrophes peuvent être envisagés, et vous pouvez être sûr +qu'au moins l'un d'entre eux se réalisera tôt ou tard : +

+ +
    +
  1. l'un des contributeurs efface par erreur tout ou partie du travail +commun mené jusque là, alors même que vous approchiez de son +terme ;
  2. + +
  3. un contributeur apporte des corrections à une version obsolète du +travail commun, car il ne savait pas où trouver la version la plus +récente ;
  4. + +
  5. deux contributeurs travaillaient simultanémlent sans le savoir, et +le deuxième a effacé sans le vouloir tout le travail du +premier ;
  6. + +
  7. un contributeur a commis de nombreuses erreurs, et l'on doit +revenir sur chacune de ses modifications, en espérant ne pas laisser +d'erreurs ;
  8. + +
  9. etc., etc.
  10. +
+ + +

La solution : CVS

+ +

+L'idéal, pour éviter ces problèmes, serait de pouvoir concilier deux +exigences apparemment contradictoires : +

+ +
    +
  1. centraliser les versions officielles pour éviter toute +ambiguïté ;
  2. + +
  3. décentraliser les versions de travail, sur lesquelles les +contributeurs apportent leurs modifications.
  4. +
+ +

+CVS réunit ces deux avantages, en respectant les principes +suivants : +

+ +
    +
  1. centralisation des versions officielles ;
  2. +
  3. numérotation des versions ;
  4. +
  5. possibilité de retour à une version antérieure ;
  6. +
  7. gestion des conflits entre deux modifications contradictoires des +mêmes fichiers ;
  8. +
  9. décentralisation des répertoires de travail, ce qui permet à +plusieurs utilisateurs de travailler simultanément, et de ne pas +officialiser les modifications tant qu'elles ne sont pas terminées.
  10. +
+ +

+Pour vous initier à CVS, nous allons successivement vous présenter +comment mettre un projet sous CVS, puis comment travailler au quotidien +sous CVS. +

+ + +

Préliminaires à l'utilisation de CVS

+ +

+Pour mettre des projets sous CVS, il faut procéder en deux temps : +

+ +
    +
  1. créer un répertoire de dépôt CVS (en anglais +repository), où seront stockées toutes les versions officielles +et leurs modifications ;
  2. + +
  3. ajouter à ce répertoire les différents projets que vous voulez +mener à l'aide de CVS.
  4. +
+ + +

Créer un répertoire de dépôt CVS (repository)

+ +

+Commençons par créer un répertoire de dépôt, c'est-à-dire un répertoire +où CVS stocke toutes les versions et leurs +modifications. Rassurez-vous : CVS investit toute son ingéniosité +pour réduire au maximum l'espace disque utilisé, en ne retenant que +les modifications, au lieu de recopier à chaque fois l'intégralité +des fichiers d'un projet. +

+ +

+Pour cela, il faut d'abord créer matériellement ce répertoire, par +exemple $HOME/cvs, puis créer la variable d'environnement +CVSROOT : +

+ +
+bireme ~ $ mkdir $HOME/cvs
+bireme ~ $ CVSROOT="$HOME/cvs"
+
+ +

+Mais attention ! dans ce cas, la variable CVSROOT disparaîtra quand +vous vous déloguerez ou fermerez le terminal courant. Aussi faut-il +écrire dans votre fichier .zshrc (si vous utilisez +zsh, comme c'est le cas à l'ENS) : +

+ +
+CVSROOT="$HOME/cvs"
+
+ +

+Une fois que ce répertoire existe, il faut « faire les +présentations » avec CVS. Tapez : +

+ +
+bireme ~ $ cd cvs 
+bireme ~/cvs $ cvs init
+
+ +

+Maintenant, vous avez un répertoire de dépôt prêt à recevoir et à +stocker les différents projets. Il ne reste plus qu'à le remplir ! +

+ + +

Créer un projet

+ +

+Supposons que vous soyez en train de concevoir un projet nommé +« turing-test », dont tous les fichiers sont réunis dans le +répertoire $HOME/programmation/turing-test. +

+ +

+Tapez : +

+ +
+bireme ~ $ cd programmation/turing-test
+bireme ~/programmation/turing-test $ cvs import turing votre_nom version0
+
+ +

+Ainsi est créé un répertoire $HOME/cvs/turing +contenant des fichiers correspondant à ceux du répertoire +$HOME/programmation/turing-test. +

+ +

+La mention votre_nom vous désigne ; vous pouvez mettre +votre login, ou autre chose si vous préférez. +

+ +

+Quant à la mention version0, il s'agit juste d'un nom pour +la version initiale : vous pouvez tout aussi bien mettre +start, debut, etc. Seule contrainte : le +premier caractère doit être une lettre. +

+ + +

Créer un répertoire de travail

+ +

+Maintenant que vous avez créé votre projet sous CVS, vous pouvez vous +créer un répertoire de travail. +

+ +
+bireme ~ $ mkdir rep-travail
+bireme ~ $ cd rep-travail
+bireme ~/rep-travail $ cvs checkout turing
+
+ +

+La commande cvs checkout projet crée un +répertoire de travail pour le projet indiqué. Vous pouvez en +créer autant que vous voulez (si vous en avez vraiment +l'utilité...). En particulier, plusieurs utilisateurs différents peuvent +en créer : c'est précisément ce qui fait l'intérêt de CVS. +

+ + + +

CVS au quotidien

+ +

Mettre à jour son répertoire de travail

+ +

+Avant de modifier les fichiers mis sous CVS, vous devrez à chaque fois +les mettre à jour, ce qui vous permet de partir de versions récentes de +ces fichiers. Pour mettre à jour votre répertoire de travail, +tapez : +

+ +
+bireme ~/turing-test $ cvs update turing
+
+ +

+Vous serez alors sûr d'avoir des fichiers à jour. +

+ +

+Vous pouvez aussi ne mettre à jour qu'un fichier, ou une liste de +fichiers : +

+ +
+bireme ~/turing-test $ cvs update fichier1 fichier2 etc
+
+ +

+Vous pouvez encore indiquer en ligne de commande quel répertoire mettre +à jour : +

+ +
+bireme ~/turing-test $ cvs update -d ~/programmation/turing-test
+
+ +

+Cette dernière commande peut être intégrée à un script, ce qui est très +pratique si vous voulez que les modifications soient prises en compte à +plusieurs endroits différents (par exemple, dans votre répertoire de +travail et sur votre page web, si vous avez mis votre page web +sous CVS). +

+ + +

Ajouter des fichiers

+ +

+Un projet est rarement fixé dès sa première version ; aussi des +fichiers peuvent-ils s'ajouter aux fichiers intégrés à l'origine (avec +la commande cvs import), d'autres en être retirés. +

+ +

+Pour ajouter des fichiers, la façon de s'y prendre dépend de la nature +du fichier en question. En effet, si le fichier est un fichier binaire, +il ne sert à rien que CVS le lise ligne à ligne à chaque partage de +modifications pour vérifier s'il a changé ; tandis que s'il s'agit +d'un fichier texte, CVS est là pour ça. +

+ +

+Par conséquent, si c'est un fichier texte (un texte +simple, un script, le code source d'un programme, un fichier TeX, etc.), +tapez : +

+ +
+bireme ~/turing-test $ cvs add fichier1 fichier2 etc
+
+ +

+En revanche, si vous voulez ajouter un fichier binaire +(un fichier exécutable, un document PS, PDF, une image JPEG, PNG, etc.), +tapez : +

+ +
+bireme ~/turing-test $ cvs add -kb fichier1 fichier2 etc
+
+ +

+Vous pouvez vérifier le statut des fichiers (binaires +ou non) avec la commande : +

+ +
+bireme ~/turing-test $ cvs status fichier
+
+ +

+Lisez le champ « Sticky Options ». Si sa valeur est +« (none) », c'est que votre fichier n'est pas déclaré comme +binaire ; s'il vaut « -kb », c'est qu'il l'est. +

+ + +

+Il arrive parfois que l'on oublie de déclarer comme binaires certains +fichiers, notamment lors de l'enregistrement du projet dans le +répertoire de dépôt CVS. Il n'est pas trop tard pour se +rattraper : +

+ +
+bireme ~/turing-test $ cvs update -kb fichier1 fichier2 etc
+
+ +

+Ce qui équivaut à la succession de commandes suivante : +

+ +
+bireme ~/turing-test $ cvs admin -kb fichier1 fichier2 etc
+bireme ~/turing-test $ cvs update fichier1 fichier2 etc +
+ + + +

Retirer des fichiers

+ +

+Pour retirer des fichiers, utilisez la commande : +

+ +
+bireme ~/turing-test $ cvs remove fichier1 fichier2 etc
+
+ + + + +

Partager les modifications

+ +

+Quand vous avez terminé vos modifications et que vous estimez que le +monde est prêt à les recevoir, partagez-les : +

+ +
+bireme ~/turing-test $ cvs commit
+
+ +

+Les modifications seront alors enregistrées dans le répertoire de dépôt. +

+ +

+Vous pouvez aussi ne partager qu'un fichier, ou une liste de +fichiers : +

+ +
+bireme ~/turing-test $ cvs commit fichier1 fichier2 etc
+
+ + +

Nettoyer son répertoire de travail

+ +

+Si vous ne contribuez qu'occasionnellement à tel ou tel projet, vous +pouvez vouloir ne pas conserver en permanence une version d'un projet +donné dans votre répertoire de travail. Pour vous en débarrasser, vous +avez bien sûr la possibilité d'effacer les fichiers d'une manière +« traditionnelle », au moyen de la commande +rm. Mais CVS propose un outil plus puissant : +

+ +
+bireme ~/turing-test $ cvs release -d turing
+
+ +

+Cette commande vérifie que vous avez bien partagé toutes vos +modifications avant d'effacer les fichiers de votre répertoire de +travail. Ceci vous épargne bien des migraines ! +

+ +

+Si vous ne voulez pas que vos dernières modifications soient prises en +compte avant d'effacer le répertoire de travail, utilisez simplement la +commande : +

+ +
+bireme ~/turing-test $ cvs release turing
+
+ +

+Cette commande annule le cvs checkout. +

+ +

Fonctionnalités avancées de CVS

+ +

Historique des modifications

+ +

+CVS garde l'historique de toutes les modifications. Si vous voulez voir +l'historique complet, tapez : +

+ +
+bireme ~/turing-test $ cvs log
+
+ +

+Vous pouvez aussi ne consulter l'historique que d'un fichier, ou d'une +liste de fichiers : +

+ +
+bireme ~/turing-test $ cvs log fichier1 fichier2 etc
+
+ +

+Devant vos yeux ébahis s'affichera alors la liste de toutes les versions +de ces fichiers, accompagnées des commentaires déposés par les +contributeurs. +

+ +

Comparer des versions

+ +

+Vous voulez savoir précisément en quoi telle version d'un fichier +diffère de telle autre ; pour cela, tapez : +

+ +
+bireme ~/turing-test $ cvs diff -r 1.2 fichier
+
+ +

+Ainsi, vous pourrez comparer l'état actuel du fichier avec sa +version 1.2. Mais vous pouvez aussi comparer deux versions +quelconques : +

+ +
+bireme ~/turing-test $ cvs diff -r 1.1 -r 1.2 fichier
+
+ +

Revenir sur des modifications

+ +

+Oups ! Vous avez fait une erreur, et dans votre précipitation, vous +l'avez déjà partagée. Heureusement, CVS permet de revenir à des versions +antérieures. Tapez : +

+ +
+bireme ~/turing-test $ cvs update -A fichier
+bireme ~/turing-test $ rm fichier
+bireme ~/turing-test $ cvs update -p -r1.1 fichier > fichier
+bireme ~/turing-test $ cvs commit fichier
+
+ + +

+Vous êtes maintenant prêt à utiliser CVS. Sa puissance est telle que cet +outil est devenu l'un des standards incontournables. Profitez-en +bien ! +

+ + +

Bibliographie

+

Vous pouvez accéder à la petite documentation rédigée par David Monniaux (au format .ps.gz). @@ -30,7 +493,8 @@ href="http://www.cvshome.org/docs/manual/">l

- Auteur : Joël Riou. Dernière modification le 2002-12-20. + Auteurs : Baptiste Mélès, Joël Riou. Dernière modification le + .