Buenas,
en este post no pienso hablar nada de Team Foundation Server 2010 o de Visual Studio 2010, pero me servirá como referencia para próximos posts sobre la utilización TFS Integration Platform. Asi que a lo que vamos …
El escenario que intento abarcar en este post se refiere a la necesidad de exportar el contenido completo de un repositorio de SubVersion a otro repositorio, incluyendo revisiones, histórico, etc. Para este ejemplo, trabajaré con uno de los clientes más populares de SubVersion: TortoiseSvn. Los siguientes pasos describen como realizar la exportación / sincronización.
Tutorial
1. Suponiendo que tenemos un repositorio de SubVersion creado en el directorio [C:\Demo\OldRepo], crearemos un nuevo repositorio en el directorio [C:\Demo\NewRepo]
2. Para esto, en Windows Explorer seleccionamos el directorio, desplegamos el menú contextual y seleccionamos la opción [TortoiseSVN // Create repository here]
Una vez creado podremos ver que dentro del mismo, se crea una estructura de carpetas propia de un repositorio de SubVersion.
3. Si queremos validar el contenido vación del repositorio, desplegamos nuevamente el menú contextual desde Windows Explorer y seleccionamos la opción [TortoiseSVN // Repo-browser]. En la url ponemos el acceso al repositorio recién creado, y veremos como el mismo está vacío.
4. Ahora comenzamos la sincronización utilizando el comando svnsync. Para realizar una sincronización, necesitamos ejecutar 2 pasos con este comando:
1: CD "C:\Program Files\Subversion\bin"
2: svnsync initialize "file:///C:/Demo/NewRepo" "file:///C:/Demo/OldRepo"
3: svnsync sync file:///C:/Demo/NewRepo
Pero sin embargo cuando realizamos esta acción, nos encontramos con el siguiente mensaje de error:
1: Microsoft Windows [Version 6.0.6002]
2: Copyright (c) 2006 Microsoft Corporation. All rights reserved.
3:
4: C:\Users\Administrator>;CD "C:\Program Files\Subversion\bin"
5:
6: C:\Program Files\Subversion\bin>;svnsync initialize "file:///C:/Demo/NewRepo" "fi
7: le:///C:/Demo/OldRepo"
8: svnsync: Repository has not been enabled to accept revision propchanges;
9: ask the administrator to create a pre-revprop-change hook
10:
11: C:\Program Files\Subversion\bin>
Esta información nos indica que debemos crear un hook para admitir los cambios en las revisiones en el repositorio.
5. Si vemos el contenido del directorio [C:\Demo\NewRepo\hooks] veremos que en el mismo existe el archivo pero con extension .tmpl. Esta extensión es un template que se utilza mayormente en UNIX. Para nuestro caso crearemos un nuevo archivo con el mismo nombre pero con extensión .bat y dentro delmismo agregaremos la siguiente línea:
1: @exit 0
Por ejemplo:
6. Ahora si, ya podremos iniciar la sincronización. Cuando ejecutamos el primer comando veremos el siguiente mensaje:
1: C:\Program Files\Subversion\bin>;svnsync initialize "file:///C:/Demo/NewRepo" "fi
2: le:///C:/Demo/OldRepo"
3: Copied properties for revision 0.
7. Cuando ejecutamos la sincronización, veremos como se mueven las revisiones al repositorio de destino:
1: C:\Program Files\Subversion\bin>;svnsync sync "file:///C:/Demo/NewRepo"
2: Transmitting file data ...........
3: Committed revision 1.
4: Copied properties for revision 1.
5: Transmitting file data .
6: Committed revision 2.
7: Copied properties for revision 2.
8: Transmitting file data .
9: Committed revision 3.
10: Copied properties for revision 3.
11: Transmitting file data .
12: Committed revision 4.
13: Copied properties for revision 4.
14: Transmitting file data ......
15: Committed revision 5.
16: Copied properties for revision 5.
17: Transmitting file data ...
18: Committed revision 6.
19: Copied properties for revision 6.
20: Transmitting file data ...
21: Committed revision 7.
22: Copied properties for revision 7.
23: Transmitting file data ...
24: Committed revision 8.
25: Copied properties for revision 8.
26:
27: C:\Program Files\Subversion\bin>
Este proceso puede tardar bastante de acuerdo a la cantidad de revisiones y tamaño de las mismas.
8. Una vez finalizado el proceso, si refrescamos el Repo-browser, podremos ver como se han sincronizado los contenidos al nuevo repositorio
Pues por ahora esto es todo. En próximos posts … porque esto es importante para TFS Integration Platform.
Saludos @ Home
El Bruno


Leave a comment