Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

Convertir un dépôt CVS en Subversion

Première rédaction de cet article le 12 février 2008


Le VCS (logiciel de gestion de versions) CVS est bien vieux et souffre de nombreux inconvénients (voir par exemple l'introduction de mon article à JRES sur les nouveaux VCS). Une fois prise la décision de migrer vers Subversion, comment convertir les données existantes ?

Si on part de zéro, migrer vers Subversion est très simple, les commandes pour l'utilisateur étant quasiment identiques à celles de CVS. Mais si on a déjà des années de développement logiciel ou d'écriture de documents derrière soi et qu'on ne veut pas abandonner l'historique ? Si on est hébergé par un service tel que SourceForge, ce service fournit probablement un mécanisme de conversion (celui de SourceForge est bien documenté et marche très bien). Mais si on gère l'hébergement soi-même ? Alors, il faut utiliser un logiciel de conversion. Il en existe un très grand nombre, le plus spectaculaire étant sans doute tailor, qui peut convertir de n'importe quel VCS vers n'importe quel autre. Toutefois, tailor n'est pas sans bogues et, si on veut simplement passer de CVS à Subversion, le plus simple cvs2svn suffit largement. Il a l'intérêt d'être très robuste et de gérer tous les cas, à commencer par les branches.

L'utilisation est très simple. Si mon dépôt CVS se trouve dans CVS_REPOSITORY et que je veux mettre le futur dépôt Subversion en SVN_REPOSITORY, je tape juste :

cvs2svn -s $SVN_REPOSITORY $CVS_REPOSITORY

Il détaille alors l'opération de conversion. Je n'ai plus qu'à tester le dépôt obtenu :

svn log file://$SVN_REPOSITORY/

et, si j'obtiens correctement l'historique, c'est que tout est bon.

Les dépôts CVS en France ont parfois des messages de commit avec des encodages variés. Si c'est le cas, il faut l'indiquer au convertisseur :

cvs2svn  --encoding iso-8859-1 -s $SVN_REPOSITORY $CVS_REPOSITORY

Je ne connais pas de moyen de convertir la copie de travail (le résultat du checkout). Il faut donc vérifier, avant la conversion, que tout a bien été committé, puis effacer chaque copie de travail et refaire un checkout.

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)