Para seguir la respuesta de Charles Bailey, aquí está mi configuración de git que usa p4merge (herramienta de combinación de 3 vías multiplataforma gratuita); probado en la instalación de msys Git (Windows):
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'
o, desde un shell de Windows cmd.exe, la segunda línea se convierte en:
git config --global mergetool.p4merge.cmd "p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
Los cambios (en relación con Charles Bailey):
- agregado a la configuración global de git, es decir, válido para todos los proyectos de git, no solo el actual
- el valor de configuración de la herramienta personalizada reside en "mergetool. [tool] .cmd", no en "merge. [tool] .cmd" (tonto, pasé una hora solucionando problemas por los que git seguía quejándose de la herramienta no existente)
- se agregaron comillas dobles para todos los nombres de archivos para que la herramienta de combinación pueda encontrar archivos con espacios (probé esto en msys Git de Powershell)
- tenga en cuenta que, de forma predeterminada, Perforce agregará su directorio de instalación a PATH, por lo que no es necesario especificar la ruta completa a p4merge en el comando
Descargar: http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools
EDITAR (Feb 2014)
Como señaló @Gregory Pakosz , el último msys git ahora "nativamente" es compatible con p4merge (probado en 1.8.5.2.msysgit.0 ).
Puede mostrar la lista de herramientas compatibles ejecutando:
git mergetool --tool-help
Debería ver p4merge en la lista disponible o válida . Si no, actualiza tu git.
Si p4merge figuraba como disponible , está en su RUTA y solo tiene que configurar merge.tool :
git config --global merge.tool p4merge
Si figuraba como válido , debe definir mergetool.p4merge.path además de merge.tool :
git config --global mergetool.p4merge.path c:/Users/my-login/AppData/Local/Perforce/p4merge.exe
- Lo anterior es una ruta de ejemplo cuando se instaló p4merge para el usuario actual, no en todo el sistema (no necesita derechos de administrador ni elevación de UAC)
- Aunque
~
debería expandirse al directorio de inicio del usuario actual (por lo que, en teoría, la ruta debería ser ~/AppData/Local/Perforce/p4merge.exe
), esto no funcionó para mí
- Aún mejor hubiera sido aprovechar una variable de entorno (p
$LOCALAPPDATA/Perforce/p4merge.exe
. Ej. ), Git no parece estar expandiendo las variables de entorno para rutas (si sabe cómo hacer que esto funcione, hágamelo saber o actualice esta respuesta)