2012-12-05 14 views
15

Ciao Sto cercando di utilizzare opendiff come mergetool git, ma quando corro mergetool ricevo questo messaggio di errore:Come utilizzare opendiff come mergetool predefinita

Lo strumento di unione opendiff non è disponibile come 'opendiff'

Cosa sto sbagliando? Funzionava bene prima, ma da quando ho installato un nuovo hard disk non funziona più :(

+0

Che sistema operativo stai usando? – Ikke

+0

Si tratta di OSX Snow Leopard. – CorpusCallosum

+0

pulire opendiff e reinstallare di nuovo? Spero che tu l'abbia già provato. – Ram

risposta

12

Assicurati di aver installato XCode. (Se stai usando git, probabilmente stai usando brew, in questo caso probabilmente hai già XCode . installato)

una soluzione one-off è quello di raccontare git quello strumento che si desidera utilizzare:

$ git mergetool -t opendiff 

per quanto riguarda la creazione di opendiff come strumento di default, è necessario impostare il "merge.tool "variabile nel tuo file di configurazione git

+0

link jeetworks è morto –

+0

thx, Brian. la risposta è stata aggiornata. – cogell

16

Avrai bisogno di per configurare opendiff come merge.tool globale:

# locate xcode utilities 
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer 

# set "opendiff" as the default mergetool globally 
git config --global merge.tool opendiff 

Se si ottiene Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo, aprendo XCode e accettato la licenza di risolvere il problema

+0

Quando è necessario il comando 'xcode-select'? –

+0

Immagino che 'git' non sia già stato trovato, ma è difficile capire come si potrebbe finire in quella situazione. – Tommy

1

git supporta --dir-diff (-d) per eseguire una directory diff, che sembra buono in FileMerge. Tuttavia, ci sono un paio di problemi minori usando opendiff con --dir-diff. opendiff non ha una preimpostazione predefinita di --merge, e git farà cadere troppo presto i file temporanei per salvare le modifiche. La mia soluzione è utilizzare un piccolo script bash per richiamare FileMerge. L'ho chiamato gdiff.

#!/bin/bash 
# find top level of git project 
dir=$PWD 
until [ -e "$dir/.git" ]; do 
    if [ "$dir" == "/" ]; then 
    echo "Not a git repository" >&2 
    exit 1; 
    fi 
    dir=`dirname "$dir"` 
done 
# open fresh FileMerge and wait for termination 
open -a FileMerge -n -W --args -left "$1" -right "$2" -merge "$dir" 

https://gist.github.com/miner/e73fc98a83a8fe05d9ef000d46d68a9f

chiamare in questo modo:

git difftool -d -x gdiff

Problemi correlati