Si see here la mia configurazione per DiffMerge o KDiff3.
Sulla base di 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 variabile d'ambiente PATH
), in grado di prendere in considerazione il caso in cui non BASE
esiste.
(quando viene creato un file in due rami differenti essendo allora fuse, non ci sarebbe alcun 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 (poiché lo strumento effettivo viene chiamato nello script merge.sh
, in cui è possibile passare da un qualsiasi numero di strumento di unione desiderato)
- l'uso di doppi apici intorno
$base
, $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 (a quanto pare, è possibile download and install only p4merge - sezione Client/Visual Merge Tool -, anche se non sono installati altri prodotti P4).
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 is now supported natively by msysgit.
This means you can just do:
git config --global merge.tool p4merge
# and I recommend
git config --global mergetool.keepBackup false
Forse includi la tua sezione in .gitconfig dove configuri lo strumento di unione e il messaggio di errore completo? Hai spazi in un nome file o qualcosa del genere? – araqnid
no spazi nel nome del file - ho configurato git usando questa domanda: http://stackoverflow.com/questions/426026/git-on-windows-how-do-you-set-up-a-mergetool – JohnIdol
Possibile duplicato di [ git diff tmp file non valido su Windows quando si utilizza un programma esterno su Windows 7] (http://stackoverflow.com/questions/16551253/git-diff-tmp-file-invalid-on-windows-when-using-external-program- on-windows-7) – Powerslave