[TFS2010] HOWTO: SINCRONIZAR CONTENIDOS DESDE SUBVERSION HACIA TFS2010 [II]

image47dd1de4

Buenas,

ayer escribí un post sobre como montar un escenario para sincronizar contenidos desde un repositorio de SubVersion hacia un repositorio de Team Foundation Server 2010.

Un punto interesante de la herramienta de sincronización, es que en estos cass y con un proceso de sincronización ya definido, existen unos baselines sobre los que la misma puede continuar con la sincronización y solo aplicar los cambios desde la última sincronización.

Por ejemplo, si vemos el log de un archivo del repositorio de SubVersion, podremos ver que en el mismo se han producido un par de cambios en el día de hoy.

image

 

Si lanzamos el proceso de migración desde la herramienta de TFS Integration Platform, veremos que en la misma solo se aplican los cambios en el histórico de acciones. Estos cambios se corresponden con los únicos cambios detectados desde la última sincronización.

image

 

Finalmente si accedemos al histórico de TFS2010, también podremos ver como se han sincronizado estos cambios de manera correcta.

image

 

Saludos @ Home

El Bruno

   

[TFS2010] HowTo: Sincronizar contenidos desde SubVersion hacia TFS2010 [I]

image47dd1de4

Buenas,

después de mi pequeño post de hace 2 días:

[TFS2010] HowTo: Exportar el contenido completo de un repositorio de SubVersion a otro repositorio de Subversion

hoy mostraré un pequeño tutorial para mostrar como importar al source control de Team Foundation 2010 el contenido de un repositorio de SubVersion. Para esto utilizaremos las herramientas de integratión de TFS Integration Platform.

Tutorial

1. En primer lugar, debemos instalar las herramientas de integración. Es importante seleccionar el adaptador de SubVersion (en estado Alpha), para que tengamos acceso al mismo al momento de realizar la migración.

image

Actualmente se pueden descargar desde http://tfsintegration.codeplex.com/releases/view/35476

2. El instalador requiere de una instancia de SQL Server para guardar las definiciones de integración y el progreso de los mismos. Si no tienes un SQL Server a mano, puedes instalar y utilizar la versión Express de SQL Server. http://www.microsoft.com/downloads/es-es/details.aspx?FamilyID=58CE885D-508B-45C8-9FD3-118EDD8E6FFF

3. La plataforma de integración cuenta con una herramienta que visualmente nos permite definir los procesos de migración o integración. Lanzamos la misma y creamos un nuevo proyecto desde el menú [Configuration // Create New].

4. La creación de un nuevo proyecto requiere una plantilla inicial, seleccionamos el archivo [C:\Program Files\Microsoft Team Foundation Server Integration Tools\Configurations\Subversion\Subversion_to_TFS.xml] para crear el nuevo proyecto. En este punto podremos ver el formulario de configuración del proceso de migración. Pera este ejemplo el nombre del proceso será [Subversion to TFS 2010 23]

image

 

5. Editamos la opción [Left Source] y en la misma configuramos los datos de acceso a nuestro repositorio de SubVersion. Para este ejemplo, utilizo el acceso por file system, pero puede realizarse por cualquiera de los protocolos que soporta SubVersion.

image

 

6. Configuramos el acceso al servidor Team Foundation Server 2010 en la sección [Right Source].

7. En este punto podemos acceder a paths específicos de ambos repositorios para identificar directorios a migrar.

image

 

7. Si bien la opción para la selección de subdirectorios funciona correctamente en el editor, me he encontrado problemas seleccionado subdirectorios en SubVersion al momento de migrarlos. Con la selección de carpetas de TFS 2010 no hay problema, funciona correctamente.

image

 

8. Guardamos la configuración [Save To Database]

9. Lanzamos el proceso de sincronización a través del menú [Current Migration // Start]. Dependiendo de la cantidad de elementos a migrar, este proceso puede tardar bastante (incluso días).

10. Una vez terminado podremos ver el proceso completo como muestra la siguiente imagen:

image

 

Cada una de las acciones realizadas se detalla en el gráfico historico que se muestra en la sección inferior. La siguiente imagen muestra el detalle de la 5ta revisión procesada, con la cantidad de archivos y comentario relacionados a la misma.

image

 

11. Si accedemos al histórico de algún elemento en el repositorio de subVersion podremos ver si histórico de la siguiente forma (gracias a TortoiseSvn)

image

 

Si analizamos la misma información en el histórico del Source Control de TFS2010, veremos que la información es la misma. Y a cada elemento del histórico se le ha agregado un sufijo especificando el origen desde un proceso de TFS Integration Platform.

image

En el próximo post, como actualizar los datos “en caliente” hacia Team Foundation Server 2010 cuando se ha seguido trabajando con SubVersion.

 

 

Saludos @ Home

El Bruno

   

[TFS2010] HowTo: Exportar el contenido completo de un repositorio de SubVersion a otro repositorio de Subversion

image47dd1de4

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]

image

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.

image

 

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:

image

 

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

image

 

Pues por ahora esto es todo. En próximos posts … porque esto es importante para TFS Integration Platform.

 

 

Saludos @ Home

El Bruno

   

[EVENTO] WebCast: Conquista al mundo con Kinect y C# el próximo 1 de Marzo

Webcast MSDN: Conquistando el mundo con Kinect y C#Buenas,

 

ahora que Microsoft decidió sacar el driver oficial para Kinect, pienso seriamente en hacer un WebCast sobre Notepad++ o Paint.Net para ver si de una vez por todas, maduran a estos productos. Pero bueno, este post es para recordarme que el próximo 1 de Marzo, tendré un mano a mano virtual con Kinect, C#, algún robotito, etc.

El formato será raro, ya que tendremos un poco de código, la webcam en vivo, la señal del infrarojo y al Valentino jugando conmigo, pero bueno, algo saldrá y si los drivers oficiales son bueno, hacemos el update en unos meses.

Casi me olvido, del registro:

Registro: https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032476184&Culture=es-AR

 

Saludos @ Here

El Bruno

   

[VS2010] HotFix para evitar el “out of memory” en el editor de WorkFlow Foundation

image47dd1de4

Buenas,

apunte rápido para que no se me olvide => existe un HotFix para evitar el problema del Out of Memory cuando se cortan o copian elementos en el editor de WorkFlow Foundation en Visual Studio 2010.

El mismo se puede descargar desde https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=29729 y una vez instalado, pues si has tenido problemas, no los tendrás más Open-mouthed smile

image

Saludos @ Here

El Bruno

   

[KINECT] Drivers oficiales de Microsoft y un SDK Gratis en un par de meses

image

Buenas,

con lo rápido que van las cosas esta noticia es viejuna, pero si todavía no te enteraste, las declaraciones de Craig Mundie y Don Mattrick y este post de Rob Knies ha levantado bastante ruido en el mundo de desarrollo.

Básicamente lo que comenta es que Craig Mundie (Microsoft’s chief research) y Don Mattrick (president of Microsoft’s Interactive Entertainment Business) anunciaron el lanzamiento de un kit de desarrollo (SDK) para Kinect gratuito para la próxima primavera. Si esperas más datos, pues estás frito (NDA I’m sorry), pero que sepas que estará 100% integrado en las herramientas de desarrollo de Microsoft, es decir Visual Studio 2010. Y, cómo es de caracter gratuito, pues lo ideal será trabajar con el mismo desde las versiones Express.

Asi que, bueno, después del evento de la semana que viene con los amigos de SecondNug sobre Kinect, deberemos hacer una actualización para utilizar los drivers de Kinect oficiales Open-mouthed smile

 

 

Saludos @ Here

El Bruno

   

Fuente: http://research.microsoft.com/en-us/news/features/kinectforwindowssdk-022111.aspx

[TFS2010] HowTo: Incluir scripts de MSBuild en una definición de Build de TFS2010

image47dd1de4

Buenas,

después de mi visita por Barcelona la semana pasada al equipo del AlegreBandolero, Marc Rubiño y su gente, pues uno de los temas que quedó pendiente era evaluar la capacidad de lanzar scripts de MSBuild desde una definición de build de Team Foundation Server 2010. Ahora bien, esto que no es para nada complicado tiene un par de puntos a tener en cuenta relativos a la configuración de la build en Team Foundation Server 2010 y del script de MSBuild. Los siguientes pasos demuestran como incluir un script de MSBuild que muestra unmensaje en la consola de progreso de Builds de Team Foundation Server 2010.

Tutorial

1. Para este caso en particular, utilizaré una definición ya creada de una build que se encarga de compilar y lanzar un par de tests sobre código almacenado en TFS. Como se puede ver en la siguiente imagen, la build hasta el momento funciona correctamente

image

2. Para probar este escenario, he creado el siguiente proyecto que muestra un mensaje utilizando una tarea del tipo BuildStep (de lo que hable hace bastante tiempo por aquí). Este es el código de ejemplo de la tarea, que como pueden ver, simplemente muestra un mensaje en el Log del Build.

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"

   2:          ToolsVersion="4.0" InitialTargets="Target1">

   3:   <Target Name="Target1">

   4:     <DisplayTinos />

   5:   </Target>

   6:   <UsingTask TaskName="DisplayTinos" TaskFactory="CodeTaskFactory"

   7:         AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >

   8:     <ParameterGroup />

   9:     <Task>

  10:       <Using Namespace="System"/>

  11:       <Using Namespace="System.IO"/>

  12:       <Code Type="Fragment" Language="cs">

  13:         <![CDATA[

  14: Log.LogMessage("Hola Valentino!");

  15: //Log.LogError("Hola Martina!");

  16: ]]>

  17:       </Code>

  18:     </Task>

  19:   </UsingTask>

  20: </Project>

3. Ahora bien, para poder incluir este archivo dentro del proceso de ejecución de un build en TFS2010, es necesario que el mismo esté protegido dentro del repositorio de código fuente. Para esta demo, he seguido un criterio bastante simple y he reutilizado alguno de mis posts sobre MSBuild en una carpeta llamada [MSBuild]. Esta carpeta se baja como parte del Workspace que tiene asociado la definición del Build con lo que ya tenemos acceso a los proyectos de MSBuild.

image

4. En este paso modificaremos el archivo xaml que representa el proceso de ejecucion de TFS Build 2010. Para esto copiaremos el archivo [DefaultTemplate.xaml] a una carperta del Source Control que nos permitirá aplicar los cambios correspondientes en nuestro proceso de Build. Por defecto, los archivos de WF para las builds se encuentran en [$\BuildProcessTemplates]

image

Para este ejemplo lo copiaremos y renombraremos en otro directorio [$/LabsAgile/Build/Dev/src/BuildProcessTemplate], por ejemplo

image

 

5. En este paso, modificaremos la definición del workflow para que lance un proyecto de MSBuild. Para esto editaremos el mismo y accederemos a la siguiente sección:

  • Process
    • Run on Agent
      • Try, Compile, Test …
        • Compile Test and Associate Change Sets
          • Try Compile and Test
            • Compile and Test
              • ForEach Configuration in BuildSettings.PlatformConfiguration
                • ForEach Project in BuildSettings.ProjectsToBuild
                  • CompileTheProject

Una vez dentro, agregaremos una actividad del tipo [MSBuild] al final de la acción de compilar el proyecto. Esta actividad nos permite invocar a un proyecto de MSBuild.

image

 

6. Para que la actividad se pueda lanzar correctamente, debemos configurar las siguientes propiedades de la misma:

  • LogFile: el nombre del archivo de log sobre el que se generará la información.
    • Value: “DemoMSbuild.log”
  • LogFileDropLocation: la ubicación del archivo de log
    • Value: BuildDetail.DropLocation + “\logs”
  • Project: define el proyecto de MSBuild que se lanzará como parte del proceso de build
    • Value: SourcesDirectory + “\Build\Dev\src\MsBuild\DemoTasks.proj”
  • Targets: define las targets que se invocarán
    • Value: New String() { “Target1”}

 

image

También podemos agregar argumentos a la línea de comandos, definir el nivel de trazas, la versión de MSBuild, etc.

7. Una vez que hemos terminado de modificar el xaml, lo guardamos y lo protegemos en el Source Control.

8. A continuación ya podemos asignar este WF a nuestra definición de build de TFS2010. En este paso, editamos la definición de la Build y en la sección [Process] seleccionamos desde el Source Control el archivo de WF que hemos modificado a nuestra build.

image

9. Si todas las configuraciones son correctas, cuando lanzamos una build, en el log de la misma, después de la compilación de cada solución, podremos ver una llamada a nuestro proyecto de MSBuild. El siguiente extracto del log, muestra estas llamadas:

   1: Run MSBuild for Project

   2: C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo /noconsolelogger 

   3: "C:\Builds\1\LabsAgile\Build MsBuild Integration\Sources\Build\Dev\src\BuildDemo\BuildDemo.sln" 

   4: /m:1 /fl /flp:"logfile=C:\Builds\1\LabsAgile\Build 

   5:   MsBuild Integration\Sources\Build\Dev\src\BuildDemo\BuildDemo.log;encoding=Unicode;verbosity=normal" 

   6: /p:SkipInvalidConfigurations=true  

   7: /p:OutDir="C:\Builds\1\LabsAgile\Build MsBuild Integration\Binaries\\" 

   8: /p:Configuration="Debug" /p:Platform="Any CPU" 

   9: /p:VCBuildOverride="C:\Builds\1\LabsAgile\Build MsBuild 

  10:   Integration\Sources\Build\Dev\src\BuildDemo\BuildDemo.sln.Any CPU.Debug.vsprops"  

  11: /dl:WorkflowCentralLogger, "c:\Program Files\Microsoft Team Foundation Server 

  12:   2010\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";

  13:   "Verbosity=Normal;BuildUri=vstfs:///Build/Build/35;InformationNodeId=2902;

  14:   TargetsNotLogged=GetNativeManifest,GetCopyToOutputDirectoryItems,

  15:   GetTargetPath;TFSUrl=http://win-gs9gmujits8:8080/tfs/DefaultCollection;

  16:   "*WorkflowForwardingLogger,"c:\Program Files\Microsoft Team Foundation Server 

  17:   2010\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Normal;"

  18:  

  19: 00:00

  20: Built $/LabsAgile/Build/Dev/src/BuildDemo/BuildDemo.sln for default targets.

  21:  

  22: 00:00

  23: Built $/LabsAgile/Build/Dev/src/BuildDemo/BuildDemo/BuildDemo.csproj for default targets.

  24:  

  25: 00:00

  26: Built $/LabsAgile/Build/Dev/src/BuildDemo/BuildDemo.Tests/BuildDemo.Tests.csproj for default targets.

  27:  

  28: 00:00

  29: Built $/LabsAgile/Build/Dev/src/BuildDemo/BuildDemo/BuildDemo.csproj for default targets.

  30: MSBuild Log File

  31:  

  32: 00:04

  33: MSBuild

  34:  

  35: 00:00

  36: Built $/LabsAgile/Build/Dev/src/MsBuild/DemoTasks.proj for target(s) Target1.

  37: C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo /noconsolelogger 

  38: "C:\Builds\1\LabsAgile\Build MsBuild Integration\Sources\Build\Dev\src\MsBuild\DemoTasks.proj" 

  39: /m:1 /t:"Target1" /fl /flp:"logfile=DemoMSBuild.log;encoding=Unicode;verbosity=normal" 

  40: /p:RunCodeAnalysis="False"  /dl:WorkflowCentralLogger,"c:\Program Files\Microsoft Team Foundation 

  41:   Server 2010\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";

  42:   "Verbosity=Normal;BuildUri=vstfs:///Build/Build/35;InformationNodeId=2910;

  43:   TFSUrl=http://win-gs9gmujits8:8080/tfs/DefaultCollection;"*WorkflowForwardingLogger,

  44:   "c:\Program Files\Microsoft Team Foundation Server 2010\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";

  45:   "Verbosity=Normal;"

10. Finalmente si accedemos al directorio de [DROPS] de la build, en el directorio de logs, podremos ver el archivo creado con el output de la ejecución de nuestro proyecto de MSBuild.

 image

Pues bien, en los próximos días un poco de integración más complicada y algún que otro ejemplo interesante.

 

Saludos @ Home

El Bruno