Pasar de SVN a ClearCase

Entonces, esta vez es al revés: necesito migrar un proyecto basado en SVN a ClearCase. ¿Hay alguna herramienta que facilite un poco el process (en lugar de armar un guión personalizado) y hay algún truco de alguien que haya tenido experiencia haciendo esto?

¡Gracias!

Como se menciona aquí (ibm) y en este hilo , no existe una herramienta directa para importar datos SVN a ClearCase.

Eso significa que un script personalizado establece su espacio de trabajo SVN en un hito relevante, y luego borra esos parameters en una vista de ClearCase con una especificación de configuration "adecuada" (es decir, "especificación de configuration").

De forma adecuada, me refiero a una vista de ClearCase que importa en la twig correspondiente de ClearCase las diferentes copys de los files de Subversion ubicados en 'directorys de sucursales'. Y a continuación, importando en el order correcto las 'tags' (aún copys en el repository SVN) en la vista de import de ClearCase, con un set de tags justo después de ese tipo de import.

Así que el principal 'gotcha' es importar ciegamente toda la estructura SVN: eso daría como resultado directorys reales que no deberían estar presentes en ClearCase, ya que las twigs y las tags son de primera class para los ciudadanos con esta herramienta, y no como 'copy barata'. como en SVN.

Un buen script para comenzar (y para adaptarlo por supuesto) sería svn2git, que detecta las twigs SVN y la label, e intenta importar el contenido de esos 'directorys' a git, (pero también podría importarlos a ClearCase, a través de la derecha llamada al sistema al command 'clearfsimport').

Como la import de una sola revisión puede ser bastante larga, un enfoque realist sería limitar la secuencia de commands para que solo se importe:

  • tags
  • CABEZA del tronco
  • CABEZA de las twigs declaradas

Al importar twigs, eso significa crear el brtype, y luego establecer una label (un punto de partida), finalmente cambiando la especificación de configuration para get las siguientes reglas de selección:

element * .../svnBranch element * STARTING_LABEL -mkbranch svnBranch element /main/0 -mkbranch svnBranch 

El punto importante es tener un resultado final sin los directorys que representan la twig y la label presentes en SVN.
Desde allí, podrá mover / cambiar el nombre de los directorys principales en la estructura que desee, como la adecuada para la statement del componente UCM (si desea usar UCM).

Cuando use el script svn2cc, terminará con un playall.bat.

Si ejecuta el siguiente script, labelrá entre revisiones para que sea más fácil acceder más adelante.

Un poco excesivo tal vez, pero algunos pueden encontrarlo útil. No me disculpo por la calidad del código 🙂

 # File Name ......................... revision_labeller.pl # Written By ........................ Stuart Davidson # Date .............................. 21/07/2009 # # Description : # Adds the auto-generation and application of labels to an SVN import. # # Usage : # revision_labeller.pl -label SVN-IMPORT-MYPROJECT -playall playall.bat use strict; use warnings; use Getopt::Long; use vars qw($label $playall_path); GetOptions( 'label=s' => \$label, 'playall=s' => \$playall_path, ) or exit 2; my $revisions = 0; my $output = ""; # Count how many chout_x there are. open(PLAY, "<$playall_path"); while(<PLAY>) { if($_ =~ /^call chout_\d{1,3}.bat/) { $revisions++; } $output .= $_; } close(PLAY); # Add the ability to make labels. $output =~ s/call chin_(\d{1,3}).bat/call chin_$1.bat\ncleartool mklabel -recurse ($label)_$1 ./g; $output =~ s/\($label\)/$label/g; # For each revision, at the start, create the label my $create_labels = ""; for(my $i = 1; $i <= $revisions; $i++) { $create_labels .= "cleartool mklbtype -cfile \"comments_" . $i . ".txt\" " . $label . "_" . $i . "\n"; } $output = $create_labels . $output; # For each revision, at the end, lock the label my $lock_labels = ""; for(my $i = 1; $i <= $revisions; $i++) { $lock_labels .= "cleartool lock lbtype:" . $label . "_" . $i . "\n"; } $output = $output . $lock_labels; print $output;