CVS to SVN – HowTo

Migrer un repository CVS vers un repository SVN est assez simple, mais peut-être long avec l’outil cvn2svn.

Lire la documentation fournie, bien faite de surcroit, n’est pas un luxe et ne prendra pas énormément de temps. La FAQ contient également des informations très intéressantes.

Dans le cas où le repository CVS contient plusieurs projets que l’on veut retrouver dans le repository SVN dans la même arborescence :

cvs2svn -s /home/svn_root --encoding=latin_1 --trunk=proj1/trunk --branches=proj1/branches --tags=proj1/tags /home/cvs_root/proj1

Va convertir mon projet “proj1” depuis mon CVS vers SVN ( repository SVN qui sera créé par la même occasion), sans modification du repository CVS.

Il faut spécifier le codage de caractères à utiliser, dans le cas où les logs de commit ne sont pas en ascii (valeur par défaut), on trouvera les valeurs possibles pour cette option dans le tableau des encodings supportés par python.

Pour importer un nouveau projet dans le même repository SVN, il faut ajouter à la commande précédente l’option “–existing-svnrepos” pour que cvn2svn ne tente pas de créer le repository et émette une erreur :
cvs2svn -s /home/svn_root --existing-svnrepos --encoding=latin_1 --trunk=proj2/trunk --branches=proj2/branches --tags=proj2/tags /home/cvs_root/proj2

Cette méthode est pratique, lorsque le nombre de projets est petit, lorsque le nombre de projets est un peu plus élevé, et que l’on ne veut effectuer qu’une commande, on peut utiliser la fonctionnalité d’utilisation d’un fichier d’options, en utilisant le format bien documenté dans la FAQ.

Versions des logiciels :

  • cvs2svn version 2.0.1
  • Python 2.4.1