Usted see here mi configuración para DiffMerge o KDiff3.
Basado en esto, yo recomendaría para p4merge:
git config --global merge.tool merge
git config --global mergetool.merge.cmd "merge.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
y merge.sh
ser un envoltorio (copiado en un directorio al que hace referencia la variable de entorno PATH
), capaz de tener en cuenta el caso en el que hay BASE
existe.
(cuando se crea un archivo en dos ramas diferentes que se fusionaron luego, no habría ningún ancestro común para ese archivo)
#!/bin/sh
# Passing the following parameters to mergetool:
# local base remote merge_result
alocal=$1
base=$2
remote=$3
result=$4
if [ -f $base ]
then
p4merge.exe -dl "$base" "$alocal" "$remote" "$result"
else
p4merge.exe -dl "$result" "$alocal" "$remote" "$result"
fi
Es posible que tenga en cuenta:
- el uso de
PWD
en la configuración de la fusión
- el uso de "
merge
" como nombre del nombre merge.tool (ya que la herramienta real se invoca en el script merge.sh
, donde puede cambiar entre cualquier número de herramienta de fusión que desee)
- el uso de comillas dobles alrededor de
$base
, $alocal
, $remote
, $result
dentro del guión
- el camino condicional para llamar la herramienta, basada en la existencia de un fichero "base".
- la necesidad de tener siempre 3 archivos para fusionarse como parámetros (incluso cuando 'base' no existe ...)
acabo de probar que (resulta, que pueda download and install only p4merge - sección Client/Visual Merge Tool -, incluso si no tiene otro producto P4 instalado).
Con la configuración se ha descrito anteriormente, MSysGit1.6.3, sesión de DOS o sesión de bash Git:
simplemente funciona TM.
Actualización msysgit 1.7.x
Benjol menciones en los comentarios:
p4merge is now supported natively by msysgit.
This means you can just do:
git config --global merge.tool p4merge
# and I recommend
git config --global mergetool.keepBackup false
Quizás incluya su sección en .gitconfig donde configura la herramienta de fusión y el mensaje de error completo? ¿Tiene espacios en un nombre de archivo o algo así? – araqnid
no hay espacios en el nombre de archivo - configuré git usando esta pregunta: http://stackoverflow.com/questions/426026/git-on-windows-how-do-you-set-up-a-mergetool – JohnIdol
Posible duplicado de [ git diff tmp archivo no válido en Windows cuando se usa un programa externo en Windows 7] (http://stackoverflow.com/questions/16551253/git-diff-tmp-file-invalid-on-windows-when-using-external-program- on-windows-7) – Powerslave