2012-12-05 10 views
15

Hi Próbuję użyć opendiff jako mergetool git, ale gdy uruchamiam mergetool otrzymuję komunikat o błędzie:Jak korzystać opendiff jako domyślny mergetool

Przejęcie narzędzie opendiff nie jest dostępny jako „opendiff”

Co robię źle? To działało wcześniej, ale odkąd zainstalowałem nowy dysk twardy, to już nie działa: (

+0

Co OS używasz? – Ikke

+0

To jest na systemie OSX Snow Leopard. – CorpusCallosum

+0

czysty opendiff i ponownie zainstalować? Mam nadzieję, że już go wypróbowałeś – Ram

Odpowiedz

12

Upewnij się, że masz zainstalowany XCode. (Jeśli używasz gita to prawdopodobnie używasz naparu, w tym przypadku prawdopodobnie już masz XCode . zainstalowany)

jednorazową rozwiązaniem jest powiedzieć, co narzędzie git chcesz używać:

$ git mergetool -t opendiff 

miarę konfigurowania opendiff jako domyślnego narzędzia, trzeba ustawić „merge.tool "zmienna w pliku konfiguracyjnym git.

+0

Link do jeetworks jest martwy –

+0

thx, Brian. odpowiedź została zaktualizowana. – cogell

16

Będziesz potrzebować skonfigurować opendiff jako globalnego merge.tool:

# 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 

Jeśli masz Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo, otwierając XCode i zaakceptowaniu licencji rozwiązuje problem

+0

Kiedy wymagane jest polecenie 'xcode-select'? –

+0

Domyślam się, że 'git' nie jest już znaleziony, ale trudno jest zrozumieć, w jaki sposób możesz skończyć w tej sytuacji. – Tommy

1

git obsługuje --dir-diff (-d), aby wykonać katalogu diff, który dobrze wygląda w FileMerge. Istnieje jednak kilka drobnych problemów z użyciem opendiff z rozszerzeniem -dir-diff. opendiff nie ma predefiniowanego ustawienia docelowego --merge, a git zrzuci pliki tymczasowe zbyt wcześnie, aby zapisać zmiany. Moje obejście polega na użyciu małego skryptu bash do wywołania FileMerge. Nazwałem to 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

nazwać to tak:

git difftool -d -x gdiff

Powiązane problemy