error p4merge [GIT]
Pregunta
Estoy tratando de utilizar p4merge con git, pero me estoy haciendo:
Error al iniciar p4merge: "ruta / myFile" es (o puntos a) un archivo no válido (esta lista la base, locales, remotos, y la versión estándar del archivo)
.Git me dice sobre el conflicto, entonces le pregunta si quiero iniciar el mergetool configurado (p4merge) y luego me sale el error anterior.
Nota adicional: sucede con cualquier archivo
!Cualquier idea de lo que es esto y cómo solucionarlo?
Solución
Esto funcionó para mí usando msysGit en Windows 7:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
No sé por qué pero la citando enredaban las cosas para mí.
Otros consejos
aquí mi configuración para DiffMerge o KDiff3.
En base a eso, 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 el PATH
variable de entorno), poder tener en cuenta el caso en el que no existe BASE
.
(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 el nombre del nombre merge.tool (ya que la herramienta real se llama en el$base
guión, donde se puede cambiar entre cualquier número de herramienta de combinación que desee) - el uso de comillas dobles
$alocal
,$remote
,$result
, <=> dentro del script - la ruta de acceso 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 ...)
Sólo se probó (que resulta, puede e instalar solamente p4merge - sección Cliente / herramienta de combinación visual -., incluso si usted no tiene ningún 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 .
Actualizar msysgit 1.7.x
Benjol menciones en los comentarios:
p4merge Ahora se admite de forma nativa por msysgit .
Esto significa que sólo puede hacer:
git config --global merge.tool p4merge
# and I recommend
git config --global mergetool.keepBackup false