none
Extraer archivos del TFS RRS feed

  • Pregunta

  • Estimados, seguramente se preguntaran para que necesito esto, pero les explico un poco la situacion, donde trabajo el TFS se usa de varias formas, en algunos proyectos lo usan bien completo, y en otros solo el control de fuentes, como para resguardar las versiones que luego son migradas a un servidor productivo.
    Mi consulta es de que forma rapida y facil de implementar se podria extrar archivos de un CS en especifico, si se puede a un path unc mucho mejor, ya que me ahorraria el doble trabajo.

    Gracias y Saludos.
    Javier simon
    miércoles, 2 de septiembre de 2009 19:58

Todas las respuestas

  • Bruno, muchas gracias por tu respuesta, te sigo hace mucho en tu blog, desde tfs05 jejej. Lo que me comentas lo estuve mirando, pero no me queda claro que cuando ejecuto el supuesto tf get, esto me lo baja donde este configurado el workspace verdad?

    Alguna idea para hacer que se ejecute luego de un checkin, de forma automatica?
    o pido mucho... :o(

    Como dato adicional, te cuento que sin nada de experiencia instale y administro el tfs de Repsolypf. Todo con ayuda de tu blog, no queria dejar pasar esta oportunidad para agradecerte.

    En mi trabajo, como no es una empresa de desarrollo es una constante pelea con los diferentes desarrolladores por todos lados y sus checkin, que luego tengo que enviar a produccion, seguimos las normas sox, y los desarrolladores no pueden tocar TST ni PRD, por eso hay un sector especifico que saca los datos y los migra para bien decirlo. Esto te lo aclaro para que me entiendas a lo que me enfrento je.

    Gracias nuevamente.

    Slds Javier.
    miércoles, 2 de septiembre de 2009 23:05
  • Javier pues muchas gracias por el apoyo :D

    ahora que me lo complicas un poco, creo que la mejor solución sería un modelo que respete los siguientes pasos

    1. Un usuario realiza una acción de CheckIn en un Team Project
    2. El servidor captura la accion de CheckIn e invoca a un servicio externo
    3. El servicio externo posee la información completa del CheckIn y procesa el evento: copia el archivo a la ubicación deseada.

    Esto en realidad no es muy complicado ya que se puede hacer fácilmente creando un servicio WCF que procese los eventos del TFS. Un ejemplo del mismo lo puedes ver en http://geeks.ms/blogs/elbruno/archive/2008/09/28/tfs-tfs-build-missile-launcher-1ra-parte.aspx.

    Creo que la opción puede ir por este lado ya que si lo que deseas es un poco más complicado que un simple Copy y tienes que configurar entornos, seguramente tener trazas, control de eventos, etc.; pues a explotar las capacidaes de integración de TFS !!!!

    Saludos


    MVP Team System http://www.elbruno.com
    jueves, 3 de septiembre de 2009 21:27
    Moderador
  • Yo tengo otra posible solución; es una aproximación algo distinta a la de Bruno, a ver qué os parece. Y creo que se puede poner en marcha en un ratillo de nada, en principio son un par de líneas de código ;-)

    1. Crear una build cuyo workspace esté mapeado a la ruta de servidor que contenga los ficheros (con esto ya tenemos la acción de obtener los ficheros sin ningún esfuerzo adicional). Configurar la build para que se lance en cada checkin (con esto ya tenemos la ejecución automática en cada Checkin también de forma muy sencilla)
    2. Modificar el TFSBuild.proj para que copie los ficheros que te interesen desde la carpeta local de trabajo de la build (alguna subcarpeta de $(SourceDir)) al path unc requerido. Para ello por ejemplo puedes sobrescribir el target de extensibilidad AfterGet, utilizando en él la tarea Copy. Esto es lo que decía que se puede hacer con muy pocas líneas de código

    En resumen, lo que propongo es aprovechar que las builds ya te bajan el código y se pueden lanzar en cada checkin ellas solitas, sólo hay que decirles que hagan la copia. Y además en la build también se puede hacer cualquier cosa que no sea un simple Copy...

    Que conste que la solución de Bruno me parece totalmente válida y muy potente. Creo que la decisión puede depender de con qué parte de TFS tengas más experiencia (manejo de eventos o builds...), y qué tipo de cosas aparte de copiar ficheros quieres llegar a conseguir.

    Espero que sea de ayuda...

    Un saludo!!!

    jueves, 3 de septiembre de 2009 22:40
  • Jose Luis, gracias por tu ayuda, esta forma que me contas, la habia probado varias veces, pero tengo el problema que para que funcione tiene que compilar una solucion, la cual no existe, ya que como comente anteriormente, tambien lo usamos como solo repositorio, hasta paso a produccion algunas imagenes cuando las editan. Por eso que mi tarea es mucho mas complicada. Ahora si hay alguna forma de hacerlo andar sin que use una solucion y solo copie estaria 10 puntos.


    Saludos y Gracias

    Javier
    jueves, 3 de septiembre de 2009 23:01
  • Prueba lo siguiente:

    1. Crea una build como te dije en el post anterior (con el mapeo de workspace adecuado y que se lance en cada checkin). Cuando el asistente te pida una solución a compilar marca cualquiera que esté bajo el workspace
    2. Edita el TFSBuild.proj como dije antes (para que haga el Copy). Además de incorporar el Copy, comenta o elimina el itemgroup <SolutionToBuild> completo. Con esto evitarás tener que compilar nada

    Si no tienes ninguna solución en el workspace se puede hacer otra cosa:

    1. Crea una carpeta en el control de código llamada TeamBuildTypes\<nombre que le vas a dar a la build>. En esta carpeta sube una copia de cualquier TFSBuild.proj que ya tengas, o de algún ejemplo simple que construyas. Sube también un TFSBuild.rsp aunque sea vacío
    2. Modifica ese TFSBuild.proj a tu gusto (elimina el SolutionToBuild, incorpora el Copy y cambia cualquier otro código que sea necesario). Haz checkin de todo.
    3. Crea la build. En la parte donde especificas el fichero de proyecto, en lugar de crearlo con el asistente, usa el botón examinar y selecciona la carpeta con tu nuevo TFSBuild.proj

    Creo que con eso bastaría...

    jueves, 3 de septiembre de 2009 23:49