erreur P4Merge [GIT]
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?
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