Herramienta de Xmerge para gestionar refactors

13:27 0 Comments

Si has leido este blog anteriormente, probablemente te habrás dado cuenta de que de vez en cuando hablamos de gestión de ramas y de integraciones :-P

Pues hoy vamos a introducir la última idea que hemos tenido: el Xmerge (integración cruzada o cross-merging).

¿Y qué es la integración cruzada? Explicado de manera simple: es tan sólo una herramienta que ayuda a los desarrolladores a integrar el código que se ha movido y modificado en paralelo. Esto pasa muy a menudo al hacer un refactor del código, ¿no?

Vamos a verlo con un ejemplo: supongamos que tenemos un fichero inicial como el siguiente:



Ahora dos desarrolladores comienzan a hacer cambios en paralelo en este fichero (lo cual es una buena idea, para que no tengan que estar esperando el uno a que termine el otro... :-P):

El primer desarrollador hace sus cambios y el segundo mueve el código.





¿Qué pasará al intentar integrar los cambios?

Una herramienta de merge (o de integración) no detectará el código que se ha movido, pero verá que se ha quitado parte del código y que otra parte se ha añadido. Así que habrá que editar el código manualmente e ir copiando y pegando bloques de código. ¡Un dolor de cabeza!.



¿Y si la herramienta pudiera ayudar?

Lo mejor sería que detectara cuál ha sido el código que se ha movido, pero significaría que habría que realizar algún tipo de análisis sintáctico, que no es lo más sencillo de hacer ya que la herramienta se hace dependiente del lenguaje, etc (y esto es en lo que estamos trabajando en este momento, así que estad al loro...).

Pero, ¿y si tan sólo te dejara que encontraras el código que se ha movido y entonces la herramienta pudiera hacer el trabajo sucio? Te ahorrarías el cortar y pegar, ¿no?

Lo ideal sería tener algo como lo siguiente: que la herramienta detecte que "algo ha pasado", entonces indicaría que se debe de buscar el código que ha sido movido, entonces realiza un "sub-merge" sólo con los contribuidores afectados.



Se realiza el sub-merge, solucionando los conflictos potenciales y la herramienta cambiará tu selección por el código que se ha integrado.

Fácil, ¿no?

Estamos trabajando en una nueva versión de la herramienta de integración de Plastic y la podéis ver en acción en el siguiente vídeo:



¿Los siguientes pasos?

Estos son algunos:


  • ¿Qué pasa cuando el código se mueve a un fichero diferente? Estamos trabajando en ello.

  • Sistema que detecte de manera automática el código movido

  • Búsqueda de código movido en ficheros

    ¡Estad atentos!
  • 0 comentarios: