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?

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top