2012-05-23 24 views
6

Tenemos un proyecto en el que hemos estado trabajando en una sucursal para la versión 6.1. Uno de los cambios realizados en la rama 6.1 (conjunto de cambios 1800) fue una corrección de error, y alguien decidió que era lo suficientemente urgente como para merecer un parche para nuestra versión de producción 6.0.Aplicar un diff de una rama como un parche a otro en Visual Studio TFS

Ahora, se realizaron cambios en el archivo en cuestión antes del conjunto de cambios 1800 y después. Lo que quieren es SOLO el parche que se aplicará a 6.0.

Según http://linux.die.net/man/1/patch, parece que lo mejor que puede hacer sería crear un archivo diff mediante la comparación de cambios desde 1800 hasta 1799, y luego aplicar ese fichero diff como un parche a 6,0. Ni siquiera sé por dónde empezar a hacer esto en TFS.

Como plan alternativo, siempre puedo resolver las diferencias en changeset 1800 a mano y copiarlas en la última versión de la producción para parcharla, pero me gustaría hacer esto correctamente si es posible.

Aparte: entiendo que aplicando simplemente un diff, corre el riesgo de que una parte del código que participan en el diff 1799> 1800 se basa en código que sólo se estableció entre la versión de producción actual y de cambios de 1799, pero eso se puede verificar fácilmente construyendo y probando rápidamente la producción después de aplicar el parche diff. No estamos preocupados por eso.

+0

Solo tenía que ver manualmente los diffs y copiar y pegar los cambios en una copia extraída de la producción porque tenían prisa, pero me encantaría saber cómo hacerlo usando comandos TFS integrados en el futuro sin embargo. Sé que hay una utilidad de línea de comandos en alguna parte para cosas avanzadas de TFS, pero nunca la he buscado. – Alain

Respuesta

9

Ok, no estoy seguro de que todo comprendidas, pero aquí está:

Conjunto de cambios en TFS no almacenan el contenido absoluto de un archivo, pero la diferencia (líneas añadido, eliminado, cambiado).

Si desea informar su corrección de errores de la versión 6.1 a la 6.0 y esta solución está incluida en el conjunto de cambios 1800 (y nada más que esta solución), simplemente fusione el conjunto de cambios dado a la versión 6.0. Todos los cambios realizados antes del conjunto de cambios 1800 no se fusionarán en el 6.0, solo se fusionará lo que hizo en este conjunto de cambios.

Al hacer una combinación que tiene dos opciones:

  1. fusionar todos los cambios de la rama origen al destino uno
  2. Combinar un conjunto de cambios seleccionado desde la fuente hasta el destino uno.

Utilice el segundo y especifique el conjunto de cambios 1800 y todo irá bien.

Algunas imágenes:

enter image description here

enter image description here

SOLO el conjunto de cambios seleccionados serán fusionados.

+0

Cuando voy a Merge> Selected Changesets> y luego selecciono "1800", intenta fusionar todo * hasta e incluyendo * 1800.¿Ha verificado que hay otra forma de fusionar solo los cambios realizados entre 1799 y 1800 con esta característica? – Alain

+0

Si entiendo la pregunta correctamente, no hay nada en la rama 6.0 que no pertenezca al 6.1? Si es así, una combinación completa de 6.0 a 6.1 _prior a_ la combinación real de conjuntos de cambios puede ayudar. __Y__ es solo desde TFS 2010 que los conjuntos de cambios solo contienen las diferencias. Antes de eso, hacer una fusión así puede ser muy complicado, como dices. –

+0

Actualicé mi respuesta, no sé dónde se encontraba. No está usando el método que di con las capturas de pantalla, solo es el seleccionado, te lo garantizo. – Nock

Cuestiones relacionadas