Errore di p4merge [GIT]
Domanda
Sto cercando di utilizzare p4merge con git, ma sto ottenendo:
Errore di partenza p4merge: "path / myFile" è (o punti a) un file non valido (questo elenca la base, locale, remota, e la versione standard del file)
.Git mi racconta il conflitto allora chiede se voglio avviare il mergetool configurato (p4merge) e quindi ottengo l'errore di cui sopra.
Nota aggiuntiva: accade con qualsiasi file
!Qualsiasi indizio su ciò che questo è e come risolvere il problema?
Soluzione
Questo ha funzionato per me usando msysgit su Windows 7:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
Non so perché, ma il quoting avvitato le cose per me.
Altri suggerimenti
Si vedere qui mia configurazione per DiffMerge o KDiff3.
In base a questo, mi sento di raccomandare per p4merge:
git config --global merge.tool merge
git config --global mergetool.merge.cmd "merge.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
e merge.sh
essendo un involucro (copiato in una directory a cui fa riferimento la tua PATH
variabile d'ambiente), in grado di prendere in considerazione il caso in cui non esiste alcun BASE
.
(Quando si crea un file in due rami differenti essendo allora fuse, non ci sarebbe nessun antenato comune per quel file)
#!/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
Si può notare:
- l'uso del
PWD
nella configurazione della fusione - l'uso di "
merge
" come nome del nome merge.tool (dal momento che il vero e proprio strumento viene chiamato nel$base
sceneggiatura, in cui è possibile passare da un qualsiasi numero di strumento di unione che si desidera) - l'uso di doppi apici
$alocal
,$remote
,$result
, <=> all'interno dello script - il percorso condizionale per chiamare lo strumento, basato sull'esistenza di un file "base".
- la necessità di avere sempre 3 file per unire come parametri (anche se 'base' non esiste ...)
appena provato (si scopre, puoi p4merge - sezione client / visiva strumento di unione -., anche se non si dispone di qualsiasi altro prodotto P4 installato)
Con le impostazioni descritto sopra, MSysGit1.6.3, sessione DOS o sessione di bash Git:
Funziona proprio TM .
Aggiornamento msysgit 1.7.x
Benjol menzioni nei commenti:
p4merge è ora supportato nativamente da msysgit .
Questo significa che si può fare solo:
git config --global merge.tool p4merge
# and I recommend
git config --global mergetool.keepBackup false