2009-05-25 7 views
1

Je convertis un grand référentiel CVS multi-projet en Subversion en utilisant cvs2svn. Cela fonctionne très bien, mais il y a quelques projets CVS qui devraient vraiment être des branches d'autres projets. En utilisant un fichier d'options, je peux spécifier que le tronc du projet 'ShouldBeBranch' doit être placé dans '/ OtherProject/branches/ShouldBeBranch', mais je ne trouve pas un moyen d'éviter de créer des répertoires Subversion pour le les balises et les branches du projet ShouldBeBranch (qui sont vides, mais encore créées).Besoin de convertir une ligne de projet en branche en utilisant CVS

La seule option que je peux voir pour le moment est de supprimer les répertoires de Subversion une fois la conversion terminée, mais je me demandais si quelqu'un savait comment cela pourrait être fait dans le processus de conversion? J'ai aussi regardé le fichier d'indices de symboles, mais avec 270 projets, spécifier un projet par numéro d'index semble trop difficile!

Un grand merci, David

Répondre

2

Votre projet "ShouldBeBranch" a probablement des branches et des étiquettes. Où voulez-vous que ça finisse?

Si vous voulez que le tronc du projet « ShouldBeBranch » à inclure dans la conversion:

  • ne comprennent pas tous les autres symboles du projet « ShouldBeBranch »
  • mis son trunk_path sur un chemin dans le autre projet
  • mis la branches_path et tags_path Aucun dans votre fichier d'options (ce qui les empêche d'être créé)

la partie de votre fichier d'options qui annonce ds le projet « ShouldBeBranch » va donc contenir des lignes comme celle-ci:

run_options.add_project(
    # ... 
    trunk_path='OtherProject/branches/ShouldBeBranch', 
    branches_path=None, 
    tags_path=None, 
    # ... 
    symbol_strategy_rules=[ 
     ExcludeRegexpStrategyRule(r'.*'), 
     ], 
    ) 
+0

ShouldBeBranch ne fait pas de branches ou des balises propres, donc je pense que la solution « Aucun » fera l'affaire ... Je Je n'ai vu ça nulle part! Merci, David –

+0

Salut il mhagger, J'utilise cvs2svn 2.1.1, qui est le paquet disponible dans Ubuntu 9.04. Avec cette version, cvs2svn lève une exception lorsqu'il tente de diviser le chemin: Traceback (dernier appel en dernier): ... Fichier "/var/lib/python-support/python2.6/cvs2svn_lib/common. py ", ligne 115, dans path_split pos = path.rfind ('/') AttributeError: L'objet 'NoneType' n'a pas d'attribut 'rfind' Exception AttributeError:" L'objet 'NoneType' n'a pas d'attribut 'error' "dans < méthode liée Popen .__ del__ de > ignoré Est-ce quelque chose qui a changé dans 2.2.0?Merci! –

+0

Mise à jour vers la dernière version de cvs2svn (version 2.2.0), et la suggestion de mhagger fonctionne maintenant parfaitement: aucun répertoire faux créé. Merci beaucoup! –

1

Faire les fixups après l'importation semble que la meilleure chose pour moi. Si vous svn déplacez le projet \ tronc d'un projet vers une branche \ quelque chose, Subversion ne fera que suivre l'historique.

Ce blog post décrit un moyen de renommer des chemins à l'aide d'un cycle de vidage/chargement. Cette façon de faire changera l'histoire, de sorte que lorsque vous regarderez l'histoire des fichiers, il semblerait qu'ils aient toujours été dans la branche \ quelque chose.

Si vous revenez à l'ancienne version, vous devrez attendre que ce soit dans le projet \ trunk. Par conséquent, je ne pense pas que ce soit une bonne chose d'essayer de changer l'histoire.