Autres
AideEnLigne
CahierDeBrouillon
Présentation
Administration

MesLectures
[Journal d'Ophelia]
[Blog Larnac]
[Traitement texte en ligne]
[Kim Khal]

Informations
[Rue 89]
[Tele libre]

DNS etc
[Robtex]
Logins
Votre ID: 111
Nom:
Login utilisateur
Mot de passe éditeur

CVSViteFait

Quelques notes pour démarrer avec CVS

Un tutorial qui semble OK http://cvsbook.red-bean.com/cvsbook.html

Installation du répertoire CVS :

 setenv CVSROOT /usr/local/reposit
 cvs init
 creation du groupe cvs in /etc/group 
 cd /usr/local/reposit
 chgrp -R cvs .
 chmod ug+rwx . CVSROOT

Remplir le projet avec les sources

  1. se logger sous id cmic
  2. newgrp cvs
  3. cd managip (rep des sources originales pas encore cvs'ed)
  4. cvs import -m "Projet ManagIP?" managip vendortag releasetag .... l'importation se fait vers /usr/local/reposit/managip
  5. Puis prendre une copie de travail depuis le repository :

 cd ~
 cvs checkout managip  #copie des sources dans ~/managip et creation d'un repertoire 
                       #CVS dans ~/managip
Session de travail

 cd ~/managip    
 emacs module.cgi      #modif d'une source, puis sa sauvegarde
 cvs commit            #la placer dans le repository (ou C-x C-q dans Emacs)

Voir les differences :

 cvs diff              #toutes les diff entre la copie de 
                       #travail et celle du reposit

Voir la version d'un module :

 cvs status module.pl  #(pour tous les modules : cvs status)

Ajouter un fichier au reposit :

  1. - le créer dans le repertoire de travail
  2. - cvs add fichier.pl
  3. - cvs commit fichier.pl (pour le mettre dans le repository)

ou : cvs ci -m "Commmentaire du log" fichier.pl

Récupérer depuis le reposit des source mises a jour :

 cd ~/managip
 cvs update

Revenir en arrière sur un commit

Le commit précédent a généré la version 1.6. Verifier le différence avec la version précédente 1.5

 cvs diff -r1.5 fichier.pl  

Récupérer la version précédente dans le même fichier :

 cvs update -p -r1.5 fichier.pl > fichier.pl

Editer fichier.pl, version 1.5 puis commit. Le fichier.pl est maintenant en version 1.7

Insérer des macros dans la source : La revision
 # exemple : $Revision$ 

Autre keywords :

 $Author$  $Date$  
 $Id$                  #Le nom, la date, l'auteur, etc... 
 $Source$ 
 $Log$                 #pour integrer des commentaires par revision dans la source.
 $Name$                #Le nom du sticky tag comme $Name: release_1_14 $
 $Header$              #tout sauf le Log

Pour mettre a une même révision tous les modules

 cd ~/managip ; touch *          
 cvs commit -r3 managip  #tous les modules de managip sont alors Revision 
                         #3.1 (et non pas 3)

Pour récupérer les sources a partir d'une rev. donnée :

 cd ~
 cvs checkout -r 3 managip # recup de la version 3.x

Pour créer un snapshot (pour release) qui couvre tous les modules, utiliser les tags

 cvs tag Rel-1  

Récuparation des sources au snapshot pour distribution :

 cd ~
 cvs checkout -d managipRel_1 -r Rel-1 managip   #Recup dans managipRel-1 des 
                                                 #sources de managip au tag Rel-1
ou encore
 cvs update -r Rel-1                   #si on est deja dans le rep. managip 

Attention : on ne peut plus modifier les sources récupérées dans managipRel-1 (sticky tag). Il faut au préalable faire un reset du sticky tag :

 cvs update -A

Ou alors trannsformer ce tag en branche :

 cvs tag -b -r Rel-1 Rel-1-p2     #nouvelle branche Rel-1-p2
 cvs update -r Rel-1-p2           #on peut editer et faire des commits

Pour connaitre les version deja taggees :

 cvs history                 # voir egalement les options de history avec cvs history -z
 cvs log fichier.c           # voir les tags deja créés
 avec Emacs : C-x vl 

Pour créer une branche :

 cd managip
 cvs tag "Rel-n"             #Release tag facultatif)
 cvs tag -b "Rel-n-branch-1" #Nouvelle branche basee sur Rel-n
 cvs update -r "Rel-n-branch-1" 

Pour connaitre les versions déja taggées :

 cvs history                   # voir egalement les options de history
 cvs history -n managip -e     # tous les tgas de managip

Pour effacer un module mais pouvoir le retrouver ulterieurement :

 cvs commit module.c           #pour etre sur qu'il est dans CVS
 rm module.c                   #effacement du document de travail
 cvs remove module.c           #signifier a CVS qu'on efface
 cvs commit module.c           #effacement effectif

Pour effacer définitivement un projet entier

 cvs release -d managip         
 rm -rf managip

CVSNT et clients Windows (tm)

CVSNT fonctionne sous Windows(tm), Solaris, Mac, RHEL4. Il présente entre autres l'avantage de mieux gérer les binaires (diff sur les binaires). L'installation sous Windows NT est un peu casse tête. On peut s'aider de [cette page]. Le site officiel est http://www.march-hare.com/cvspro/ . Ne pas oublier [la référence des commandes de CVSNT]. On peut utiliser [TortoiseCVS] en tant que client CVS sous Windows(tm). Les menus sont intégrés dans l'explorateur et l'interface est en français.

+Commandes Emacs pour CVS
 C-x C-q    CVS commit and quit (exit C-c c)
 C-x v=     CVS diff in another window
 C-x v v    CVS commit
 C-x v i    CVS add file
 C-x v l    CVS view history and tags
 C-x v s    CVS create snapshot (?)
 C-x v r    CVS retrieve a snapshot

Voir aussi la page Cmic/Computing?, paragraphe sur Emacs tools and tips

--Cmic