Question

Je suis en train d'utiliser P4Merge avec git mais je reçois:

Erreur lors du démarrage P4Merge: "chemin / myFile" est (ou points à) un fichier non valide (cette liste la base, LOCAL, A DISTANCE, et la version standard du fichier)

.

Git me parle du conflit, alors il demande si je veux démarrer le mergetool configuré (P4Merge), puis-je obtenir l'erreur ci-dessus.

Note supplémentaire: il arrive avec un fichier

Toute la moindre idée de ce que cela est et comment y remédier?

Était-ce utile?

La solution

Cela a fonctionné pour moi en utilisant msysGit sur Windows 7:

git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'

Je ne sais pas pourquoi, mais la citation visse les choses pour moi.

Autres conseils

Vous voir ici ma config pour DiffMerge ou KDiff3.

Sur cette base, je recommanderais pour P4Merge:

git config --global merge.tool merge
git config --global mergetool.merge.cmd "merge.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""

et une enveloppe étant merge.sh (copié dans un répertoire référencé par votre variable d'environnement PATH), capable de prendre en compte le cas où aucune existe BASE.
(Quand un fichier est créé dans deux branches différentes étant alors fusionnées, il n'y aurait aucun ancêtre commun pour ce fichier)

#!/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

Vous pouvez noter:

  • l'utilisation de la configuration dans PWD de la fusion
  • l'utilisation de « merge » comme nom du nom de merge.tool (puisque l'outil réel est appelé dans le scénario $base, où vous pouvez basculer entre un certain nombre d'outil de fusion que vous voulez)
  • l'utilisation des guillemets doubles autour $alocal, $remote, $result, dans le script <=>
  • le chemin conditionnel pour appeler l'outil, fondé sur l'existence d'un fichier « de base ».
  • la nécessité d'avoir toujours 3 fichiers à fusionner en tant que paramètres (même lorsque la « base » n'existe pas ...)

Juste testé (il se trouve, vous pouvez seulement P4Merge - section client / visuel outil de fusion -., même si vous n'avez pas d'autre produit P4 installé)

Avec les paramètres ci-dessus décrivent, MSysGit1.6.3, la session DOS ou d'une session bash Git:
Il fonctionne TM .


Mise à jour msysgit 1.7.x

Benjol mentions dans les commentaires:

  

P4Merge est désormais pris en charge nativement par msysgit .

     

Cela signifie que vous pouvez simplement faire:

git config --global merge.tool p4merge
# and I recommend 
git config --global mergetool.keepBackup false
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top