viernes, 18 de marzo de 2011

Herramientas de comparación y merge en TFS

Los que usamos TFS (Team Foundation Server) para el control de código fuente, sabemos que la herramienta de merge por defecto (Diffmerge) es bastante pobre.

Por suerte Visual Studio 2010 permite configurar el software para comparaciones y merge de código que hagamos dentro de TFS.

Aquí les ofrezco una breve comparación entre Diffmerge y otras dos populares herramientas (WinMerge y KDiff), además de los pasos necesarios para configurarlas dentro de Visual Studio.


Diffmerge (TFS)

• Es la herramienta por defecto del TFS para comparaciones y merges.
• No hay posibilidad de cambiar el tamaño de la fuente.
• La visibilidad del cambio es por línea, no se indica la parte de la línea que cambió.
• Interfaz poco intuitiva y no configurable.


KDiff3 (sourceforge)

• Posibilidad de cambiar el tamaño de la fuente para mayor visibilidad.
• Los cambios se resaltan con códigos de colores en la parte de la línea que sufrió cambios.
• La parte inferior muestra claramente los conflictos que deben ser resueltos manualmente.
• Interfaz configurable.
• Es open source (GNU GENERAL PUBLIC LICENSE)


• Posibilidad de cambiar el tamaño de la fuente para mayor visibilidad.
• Los cambios se resaltan con colores en la parte de la línea que sufrió cambios.
• La parte inferior muestra claramente la diferencia en el conflicto seleccionado.
• Permite visualizar rápidamente todos los cambios del archivo.
• Es open source (GNU GENERAL PUBLIC LICENSE)
• Interfaz configurable.

Estas dos últimas herramientas (WinMerge y KDiff) son bastante similares y oferecen prácticamente la misma funcionalidad, pero sin duda son las mejores herramientas de merge para Windows.
Cuestión de gusto o costumbre cuál prefiera cada uno.

Para configurar el KDiff (o cualquier otra herramienta de merge) dentro del Visual Studio, se procede de la siguiente manera:

1. Dentro de VS2010, menú Tools, Options. Navegar hasta la opción Source Control, Visual Studio TFS. Click en el botón Configure User Tools.

2. En Configure User Tools, agregar un nuevo comando con el botón Add, para asociar el comando de
Compare.

3. Ingresar los siguientes valores del comando de compare y darle OK:
Extension: *
Operation: Compare
Command: Ruta del ejecutable kdiff3
Arguments: %1 --fname %6 %2 --fname %7

4. Agregar otra nueva operación con el botón Add, esta vez para asociar el comando Merge, e ingresar los siguientes valores.
Extension: *
Operation: Merge
Command: Ruta del ejecutable kdiff3
Arguments: %3 --fname %8 %2 --fname %7 %1 --fname %6 -o %4


Listo, con esta configuración las comparaciones y merges que el TFS necesite hacer, se harán a través de la herramienta KDiff3.


Para configurar el WinMerge se procede de la misma forma, lo único que cambia es el comando y los argumentos de los últimos dos pasos, quedando así:

Extension: *
Operation: Compare
Command: winmerge.exe
Arguments: /ub /dl %6 /dr %7 %1 %2
Extension: *
Operation: Merge
Command: winmerge.exe
Arguments: /ub /dl %6 /dr %7 %1 %2 %4

Aquí transcribo una lista de herramientas con los argumentos que deben utilizarse para integrarlas con Visual Studio:
Compare
HerramientaCommandArguments
TFS defaultdiffmerge.exe%1 %2 %6 %7 %5 /ignorespace
WinDiffwindiff.exe%1 %2
DiffDoc (for Word files)DiffDoc.exe/M%1 /S%2
WinMergewinmerge.exe/ub /dl %6 /dr %7 %1 %2
Beyond Comparebc2.exe%1 %2 /title1=%6 /title2=%7
KDiff3kdiff3.exe%1 --fname %6 %2 --fname %7
Araxiscompare.exe/wait /2 /title1:%6 /title2:%7 %1 %2
Compare It!Wincmp3.exe%1 /=%6 %2 /=%7
SourceGear DiffMergeDiffMerge.exe/title1=%6 /title2=%7 %1 %2
Beyond Compare 3BComp.exe%1 %2 /title1=%6 /title2=%7
TortoiseMergeTortoiseMerge.exe/base:%1 /mine:%2 /basename:%6 /minename:%7
Visual SlickEditwin\vsdiff.exe%1 %2

Merge
HerramientaCommandArguments
TFS defaultdiffmerge.exe/merge %1 %2 %3 %4 %6 %7
KDiff3kdiff3.exe%3 --fname %8 %2 --fname %7 %1 --fname %6 -o %4
Visual SourceSafessexp.exe/merge %1 %2 %3 %4 %6 %7
Araxiscompare.exe/wait /swap /a3 /3 /title1:%6 /title2:%7 /title3:%8 %1 %2 %3 %4
Beyond Compare (2-way merge)bc2.exe%1 %2 /savetarget=%4 /title1=%6 /title2=%7
WinMerge (2-way merge)winmerge.exe/ub /dl %6 /dr %7 %1 %2 %4
Guiffyguiffy.exe-s -h1%6 -h2%7 -hm%9 %1 %2 %3 %4
Ellie Computingguimerge.exe--mode=merge3 %3 %1 %2 --to=%4 --title0=%8 --title1=%6 --title2=%7 --to-title=%9
SourceGear DiffMergeDiffMerge.exe/title1=%6 /title2=%8 /title3=%7 /result=%4 %1 %3 %2
Beyond Compare 3BComp.exe%1 %2 %3 %4 /title1=%6 /title2=%7 /title3=%8 /title4=%9
TortoiseMergeTortoiseMerge.exe/base:%3 /mine:%2 /theirs:%1 /basename:%8 /minename:%7 /theirsname:%6 /merged:%4 /mergedname:%9
Visual SlickEditwin\vsmerge.exe%3 %1 %2 %4



No hay comentarios:

Datos personales