Merge (fusionar o combinar) es un proceso por el cual se coge código en dos ramas y se combinan en una de ellas. Si los ficheros que se han modificado son distintos simplemente los actualizará sobre la rama de destino, pero si se han modificado los mismos archivos se producirá un conflicto el cual deberá ser comprobado y corregido por el usuario.
Estrategias para hacer branching:- Sin branching. El equipo trabaja siempre sobre la rama principal.
- Para versión. El equipo crea una rama sobre la que se sacará una versión, de forma que en la rama de la versión sólo se realizarán correcciones de bug los cuales serán combinados mediante merge con la rama principal sobre la que seguirá el trabajo.
- Para mantenimiento. Se crea una rama para poder dar soporte a compilaciones antiguas. Los cambios sobre esta rama se pueden combinar o no sobre la rama principal.
- Para funcionalidad. Se crea una o varias ramas sobre las que se irán añadiendo nuevas características a la aplicación las cuales conforme se vayan finalizando se combinarán con la rama principal.
Primero vamos a crear un proyecto nuevo llamado proyecto prueba en VS2010 y lo agregaremos a TFS:
A continuación haremos un Check In de todos los cambios pendientes:


Y nos aparecerá el siguiente dialogo:

En el que escribiremos en Target el nombre que le vamos a dar a la rama y pulsamos OK.
En este punto, tenemos dos ramas del mismo proyecto, la Main para seguir trabajando y la Release1 que es la versión que vamos a sacar y sobre la cual nos gustaría poder corregir bugs y que estos se propagaran a la rama principal:

En la imagen se puede observar como el icono de la rama Main ha cambiado para indicar que se ha hecho Branch sobre ésta.
Ahora vamos a abrir el proyecto de la versión Release1 y haremos una modificación que consistirá en añadir un botón al formulario y veremos como se propaga ese cambio a la rama Main:
Ahora para propagar los cambios, en primer lugar haremos un check in de la versión Release 1 y a continuación haremos un merge. Para ello iremos a la ventana de Source Control Explorer y pulsaremos con el botón derecho sobre la carpeta que contiene Release1 y elegiremos la opción Branching and Merging\Merge:
A continuación nos aparecerá el siguiente dialogo:

Que básicamente lo que le estamos indicando es cual es la rama origen y cual la de destino. Elegiremos que unifique la versión de Release1 con la Main para que los cambios y/o correcciones realizadas sobre Release1 se propaguen a la rama Main, y pulsaremos Next. Nos aparecerá el siguiente dialogo en el que elegiremos la versión que nos interese, yo voy a dejar Latest Version que es la que viene por defecto y la que me interesa y pulsaremos next.

Por último aparecerá el siguiente dialogo sobre el que pulsaremos Finish:

Ahora vamos a abrir el proyecto Main y si miramos en el control de código el veremos lo siguiente:

En el control de código vemos que hay una serie de archivos marcados con el icono

Ahora vamos a provocar un conflicto para ver que ocurre. Iremos al código de la versión Release1 y crearemos un nuevo botón dejando su nombre por defecto (button1) y haremos Check In del proyecto. Ahora abrimos el proyecto de la versión Main, creamos un nuevo botón dejándole también el nombre button1 y a continuación haremos un merge como en el ejemplo anterior.
Ahora se nos mostrará la siguiente pantalla indicando que ha habido conflictos:
En la parte inferior aparece la lista de ficheros en los cuales se ha producido algún conflicto y que acción tomar: - Dejar la versión de origen.
- Dejar la versión de destino.
- Utilizar una herramienta para combinar los dos archivos.

Arriba a la izquierda se nos muestra el archivo que hay en el servidor (rama origen), a la derecha el archivo que hay en nuestra copia local (rama destino) y en la parte inferior el archivo resultante de combinar ambos. En el ejemplo, en el archivo combinado no se había rellenado el bloque correspondiente a la inicialización de propiedades de button1, pulsando sobre el bloque de origen o destino, sombrea este bloque y lo rellena en el archivo combinado. Haremos lo mismo con todos los conflictos que se produzcan y pulsaremos OK al finalizar la corrección de los mismos, nos solicitará confirmación y pulsaremos Yes y ya nos habrá combinado los dos archivos.
Como se puede ver el trabajar con Branching and Merging no es una cosa complicada, Team Foundation Server se encarga de casi todo dejándonos a nosotros sólo el trabajo de repasar los conflictos que se producen durante un el merge.
gracias por el articulo, despejó algunas dudas :D
ResponderEliminarLo mismo digo, acabo de empezar con el TFS y fue de gran ayuda tenerlo tan resumido y claro :)
ResponderEliminarGracias. Muy Bueno. Viniendo de usar SVN. TFS lo allo mas simplificado
ResponderEliminarMuchas Gracias. Era justo lo que necesitaba. Por favor continua publicando articulos.
ResponderEliminarQue gran ayuda !!!! gracias
ResponderEliminarMuy interesante. Gracias por el tiempo dedicado al articulo. Muy útil.
ResponderEliminar