top of page

Bonus: Solucionar conflictos de unión de ramas con P4Merge

Hola, ha pasado nuevamente buen tiempo desde la última vez que escribí una entrada. En esta ocasión escribiré sobre uno los problemas que aquejan a los programadores juniors mientras mojan sus pies en la "code base" de la compañía, que es la solución de conflictos de unión de ramas.

En primera instancia debemos quitarnos el prejuicio que tener los conflictos de rama es cosa del mismo diablo encarnado en código :p, de hecho es una alerta indispensable cuando se trabajan varias ramas en paralelo.


¿Qué es un conflicto de rama?


Un conflicto de rama es simplemente un error de fusión entre 2 ramas provocado principalmente porque los desarrolladores han codificado la misma región de código en un archivo y al momento de hacer la unión, git muestra la alerta para que se solucione el conflicto en cuestión y decida que líneas de código primaran.


¿Por que usar P4Merge?


Desde mi punto de vista P4Merge ofrece una solución mas completa al momento de solucionar conflictos, ya que no solo muestra la diferencia entre la rama local y remota en simultáneo, sino que también adiciona la diferencia de la rama base de la cual partieron tanto la rama local como la remota.


¿Cómo solucionar conflictos con P4Merge?


1) Descargamos P4Merge desde el siguiente link: "Download Helix Visual Merge Tool Today | Perforce". Realizamos la instalación predeterminada (ósea seleccionen "si" o "siguiente" a todo :p).


2) Descargamos Git Bash desde el siguiente link "Git - Downloads (git-scm.com)". Realizamos la instalación predeterminada también (ustedes ya saben ;p).


3) Configuramos el uso de P4Merge al solucionar conflictos en Git Bash con lo siguientes comandos:

git config --global merge.tool p4merge
git config --global mergetool.p4merge.path 'c:\ProgramFiles\Peforce\p4mege.exe'

Donde: "C:\Program Files\Perforce\p4merge.exe" es la ruta donde se encuentra el archivo ejecutable de P4Mege.

 

Nota:

Para esta ocasión utilizaremos un repositorio de prueba: gustavogavancho/MatrizDinamica (github.com). El aplicativo se llama "MatrizDinámica", es un programa de consola que sirve para generar una matriz cuadra de números digitados por el usuario, actualmente tiene 2 ramas "master" y "ParallelFor", procederemos a integrar "ParallelFor" a "master" y ejemplificaremos como solucionar conflictos de unión con P4Mege.

 

4) Ejecutamos los siguientes comandos:

git merge ParallelFor
git mergetool --tool=p4merge

Ejemplo:


5) Navegar entre los conflictos a solucionar, podemos navegar entre los conflictos con las fechas azules y rojas. Para esta ocasión solo están habilitadas las flechas azules ya que son conflictos que P4Merge los soluciona por si sólo, cuando estén habilitadas las flechas rojas significa que son conflictos que P4Merge no pudo solucionar por sí solo.


Ejemplo:

P4Mege ofrece 4 casilleros donde se diferencia la rama remota, base, local y resultado. Donde base muestra los cambios de la que remoto y local partieron, remoto es la rama "ParallelFor" a integrarse, "master" es la rama local donde se integraran los cambios de la rama remota y "resultado" son las líneas de código que quedarán finalmente.


6) Solucionar el conflicto en cuestión. En este caso sería perfectamente normal dar click al botón guardar ya que el conflicto se encuentra solucionado automáticamente, pero para fines del post explicaramos un poco mas a detalle y nos daremos una idea de como solucionar conflictos. Adicionalmente el conflicto radica en las condicionales, que en remoto no hacen uso de brackets pero en local si. Ahora, ubicamos la casilla señalada en la parte derecha.


Ejemplo:


Seleccionamos línea por línea que código prevalecerá, el recuadro amarillo significa que prevalecerá los cambios de base, el triangulo invertido significa que prevalecerá remoto y el circulo verde base.


Ejemplo:


7) Guardamos cambios y ejecutamos los siguientes comandos:

git merge --continue
:q!

Y listo, acabábamos de solucionar el conflicto :). Espero el post les sea útil en futuros proyectos y en su vida profesional, por mi parte, considero que P4Merge es mucho más completo de usar. Obviamente como todo en la industria tiene su curva de aprendizaje y particularidades.


No se olviden de compartir y darle like al post.


¡Saludos!

96 visualizaciones0 comentarios

Entradas recientes

Ver todo
bottom of page