Question

Je suis en train de convertir un référentiel CVS existant en référentiel SVN.Le référentiel CVS a peu de branches et j'aimerais renommer les branches lors de la conversion.

La conversion souhaitée ressemble à ceci :

CVS branch         SVN branch
HEAD       ->      branches/branchX
branchA    ->      trunk
branchB    ->      branches/branchB
branchC    ->      branches/branchC

Autrement dit, CVS HEAD devient une branche normale et CVS branchA devient un tronc SVN.

Les référentiels CVS et SVN seront sur la même machine Linux.

Comment cela pourrait-il être fait?

De plus, une conversion où CVS branchA devient SVN trunk et toutes les autres branches CVS sont ignorées pourrait suffire.

Était-ce utile?

La solution

Je suis particulièrement intéressé par la préservation de l’historique des commits.Si je renomme et déplace des branches dans SVN après la conversion, l'historique sera-t-il conservé ?

Oui.Subversion garde également une trace des modifications apportées à la structure des répertoires et tout l'historique des versions est conservé même si un fichier est déplacé dans l'arborescence.

Je recommande de convertir le référentiel avec cvs2svn, y compris les branches et les balises.Une fois le référentiel dans Subversion, vous pouvez déplacer les branches et les balises à votre guise.Cela conserve également l'historique des balises et des branches réelles renommées, ce qui peut être intéressant dans un contexte historique plus tard.

Autres conseils

Cela fait un moment que je n'ai pas effectué de conversion CVS -> SVN, et probablement encore plus depuis que j'en ai fait une avec une structure de branches non triviale.Étant donné que SVN peut se déplacer assez facilement dans les arborescences de répertoires, vous pouvez d'abord effectuer toute la conversion, puis trier entièrement la structure tronc/branches dans SVN plus tard.

Si vous arrivez à ce point et que vous vous déplacez dans des arborescences de répertoires entières au sein de SVN, il est probablement préférable de vous engager après chaque étape de renommage/déplacement d'arborescence.Juste quelque chose à garder à l'esprit.

Les branches Subversion sont des répertoires, vous pouvez donc simplement déplacer les branches une fois l'importation terminée et aucun historique ne sera perdu.

Quelques informations supplémentaires pour étayer la réponse acceptée :

cvs2svn ne permet pas la conversion du tronc en branche ou de la branche en tronc

donc déplacer les choses une fois que vous êtes converti en svn est la meilleure façon de procéder.

Il est possible de déplacer les répertoires tronc et branche après la conversion, mais cela nécessiterait une validation SVN explicite après la conversion qui restera dans votre historique SVN, ce qui rendrait l'exploration de l'historique un peu plus compliquée.

Mais vous pouvez en effet dire à cvs2svn de stocker le tronc et les branches vers les chemins SVN souhaités en utilisant le --symbol-hints=symbol-hints.txt option de ligne de commande ou (si vous utilisez un fichier d'options pour votre conversion) l'option SymbolHintsFileRule('symbol-hints.txt') règle de stratégie de symbole, où symbol-hints.txt est un fichier contenant des lignes comme celles-ci :

. .trunk. trunk branches/branchX .
. branchX branch trunk .

Veuillez noter que certains messages de commit générés automatiquement par cvs2svn (par exemple, pour la création de la branche) mentionneront le nom de la branche d'origine.

Bien qu'il soit possible de se déplacer dans les branches une fois la conversion effectuée, il peut être préférable de configurer le fichier de configuration cvs2svn pour spécifier exactement le nom souhaité pour chacune de vos branches existantes.L'un des avantages de cette méthode est que FishEye comprendra beaucoup mieux le résultat.

Je suis particulièrement intéressé par la préservation de l’historique des commits.Si je renomme et déplace des branches dans SVN après la conversion, l'historique sera-t-il conservé ?

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