Les apports de Subversion

Subversion a été écrit afin de combler certains manques de CVS.

Voici les principaux apports :

  • Les commits, ou publications des modifications sont atomiques. Un serveur Subversion utilise de façon sous-jacente une base de données capable de gérer les transactions atomiques (le plus souvent Berkeley DB)
  • Subversion permet le renommage et le déplacement de fichiers ou de répertoires sans en perdre l’historique
  • les métadonnées sont versionnées : on peut attacher des propriétés, comme les permissions, à un fichier, par exemple

Du point de vue du simple utilisateur, les principaux changements lors du passage à Subversion, sont :

  • Les numéros de révision sont désormais globaux (pour l’ensemble du dépôt) et non plus par fichier : chaque patch a un numéro de révision unique, quels que soient les fichiers touchés. Il devient simple de se souvenir d’une version particulière d’un projet, en ne retenant qu’un seul numéro
  • svn rename (ou svn move) permet de renommer (ou déplacer) un fichier
  • Les répertoires et méta-données sont versionnés

App

CVS – Etats des fichiers

cvs status fichier

?
Ce fichier est présent dans votre répertoire de travail, mais pas dans le référentiel. Vous pouvez l’ajouter.

U (Updated)
Un fichier que vous n’aviez pas modifié vient d’être modifié par quelqu’un d’autre.

P (Patched)
Idem à U.

A (Added)
Fichier ajouté mais pas encore commité.

R (Removed)
Fichier supprimé mais pas encore commité.

M (Merged)
Ce fichier a été modifié localement par vous, et personne d’autre que vous n’a modifié le fichier, ou tous les changements apportés ont été fusionné avec succès avec le vôtre (mais vos modifications ne seront prises en compte que si vous commitez).

C (Conflicted)
Ce fichier a été modifié par vous et quelqu’un d’autre. Ces modifications n’ont pas pu être fusionnés avec succès.

App

CVS – Supprimer un tag

cvs rtag -d version-1-1 arborescence/module

App

CVS – Rollback de version d’un fichier dans CVS

Suite à une nouvelle version, il est malheureusement possible de voir apparaître des regressions sur votre application favorite.

Nous allons voir ici comment faire un rollback de version sur un fichier géré par CVS.

1. D’abord, update de la dernière révision dans votre « working copy ».
$ cvs update test.pl
P test.pl

2. A la recherche de la dernière version stable .
$ cvs log test.pl
RCS file: /cvsroot/perl/test.pl,v
revision 1.45
date: 2008/04/06 15:14:32; author: cjovet; state: Exp; lines: +10
revision 1.44
date: 2008/04/04 18:21:53; author: cjovet; state: Exp; lines: +37
-20

3. Merge des changement entre les versions 1.45 et 1.44 (i.e. backwards),
dans notre répertoire de travail …
$ cvs update -j1.45 -j1.44 test.pl
retrieving revision 1.45
retrieving revision 1.44
Merging differences between 1.45 and 1.44 into test.pl

4. Vérification du numéro de la version courante (1.44)
$ cvs diff -r1.44 test.pl
Pas de sortie = pas de difference

5. Pour avoir la différence avec la HEAD :
$ cvs diff -rHEAD test.pl

6. Enfin, commit du « working copy » courant qui rend effectif le rollback.
$ cvs commit -m \"reverting back to state in revision 1.44 to undo some bugs\" test.pl
Checking in test.pl;
/cvsroot/perl/test.pl,v test.pl
new revision: 1.46; previous revision: 1.45
done.

App

Import CVS

Créer un repository CVS local
1) mkdir /home/cvslocal && cd /home/cvslocal
2) cvs init (création du répertoire CVSROOT)

Récupérer un module à partir d’un CVS distant
1) export CVSROOT=’:ext:user@hostname:/cvsdisant/repdistant’
2) mkdir /tmp/import && cd /tmp/cvs
3) co module1 module2
4) find . -type d -name CVS -exec rm -rf {} \; (suppression de tous les répertoires CVS)
5) find . -type d -name CVS (vérification)
6) export CVSROOT=’:local:/home/cvslocal’
7) cvs import -m « import du projet1 en cvs local » module1 Recup V0
cvs import -m « import du projet 1 en cvs local » module2 Recup V0
8) ls /home/cvslocal

Les avantages de CVS

  • Prémunir des erreurs d’inattentions (développement)
  • Prémunir des erreurs matérielles
  • Présenter un projet toujours en état
  • Travailler en équipe
  • Gagner du temps

App

Recent Tweets

Catégories