Lorsque vous utilisez cvs2svn, comment pouvez-vous renommer des symboles tels qu'une branche et une balise résolvent le même nom?

StackOverflow https://stackoverflow.com/questions/157599

  •  03-07-2019
  •  | 
  •  

Question

Je travaille sur la conversion d'un référentiel CVS comportant entre autres les symboles suivants:

tcm-6.1.0-branch - une branche
tcm-6.1.0 - une balise

Utilisation des transformations standard, cvs2svn les identifie correctement. Cependant, j'aimerais faire un peu de ménage pendant la conversion. Plus précisément, j'aimerais supprimer la partie redondante "-branch" du symbole de branche, car elle se trouvera dans le répertoire "branches" de svn. J'ai ajouté ce qui suit aux symbol_transforms du projet:

RegexpSymbolTransform(r'(.*)-branch', r'\1')

Maintenant, je me retrouve avec " ERREUR: Plusieurs définitions du symbole 'tcm-6.1.0' dans ... " pour chaque fichier car tcm-6.1.0 est à la fois une branche et une balise. J'ai plusieurs paires de symboles CVS qui entraînent ce problème.

Il me semble que puisque les symboles source sont différents et que les répertoires de destination sont différents, cette opération devrait être possible. Y a-t-il quelque chose qui me manque ou s'agit-il simplement d'une lacune de cvs2svn?

Comment puis-je renommer ces symboles de telle sorte qu'ils restent séparés et aboutissent à une branche et à une balise du même nom?

-

S'il n'y a pas de solution de rechange, j'essaierai d'exclure les symboles posant problème, des règles de conversion, puis de les déplacer à la main, bien que je préfère le faire au moment de la conversion.

Était-ce utile?

La solution

RegexpSymbolTransform fonctionne à un niveau trop bas lors de l'analyse syntaxique des fichiers du référentiel. Par conséquent, si vous utilisez un SymbolTransform pour donner le même nom à deux symboles, ils seront traités comme un seul et même symbole.

Il est possible de renommer les branches et les tags après la conversion, mais cela nécessiterait un commit SVN explicite qui restera dans votre historique pour toujours, rendant l'exploration de l'historique un peu plus complexe.

Au lieu de cela, vous devez convertir la branche avec son nom d'origine, puis indiquer à cvs2svn de la stocker dans le chemin SVN /branches/tcm-6.1.0. Ainsi, le symbole se retrouvera au bon endroit pour une branche SVN portant le nom souhaité, mais sera toujours traité par cvs2svn comme distinct de la balise portant le même nom.

Cela peut être fait en utilisant - symbol-hints = symbol-hints.txt , option de ligne de commande ou SymbolHintsFileRule ('symbol-hints.txt') règle de stratégie, où symbol-hints.txt est un fichier contenant une ligne comme celle-ci:

  

. tcm-6.1.0-branch branch /branches/tcm-6.1.0.

Le seul inconvénient de cette approche, à laquelle je peux penser, est que certains messages de validation générés automatiquement par cvs2svn (par exemple, pour la création de la branche) mentionneront le nom de la branche d'origine.

Autres conseils

cvs2svn fait beaucoup de magie entre cvs et svn. C'est pourquoi vous ne pouvez pas "correspondre". les noms des branches et des balises, car cvs2svn ne saura pas quelle version appartient à quel répertoire. Mon conseil est de les renommer ensuite en un seul commit avec un outil tel que svnmucc . Vous avez donc un seul commit, puis tout est en place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top