2012-09-25 15 views
13

Często, gdy robię różnice, chcę edytować mój plik lokalny przed zatwierdzeniem. Działa to bardzo dobrze w widoku porównania Eclipse, ponieważ pozwala łatwo edytować plik lokalny, a także kopiować zmiany z poprzedniej wersji.Używanie kdiff3 do edycji różnic z git

Próbuję skonfigurować git i kdiff3 do pracy w ten sam sposób. Działa zgodnie z oczekiwaniami, gdy używam kdiff3 jako mojego mergetool. Jednak po ustawieniu go jako difftool, daje mi widok tylko do odczytu, więc nie mogę zrobić żadnych zmian. Zgodnie z dokumentacją (http://kdiff3.sourceforge.net/doc/documentation.html) oczekiwałbym opcji --output, aby dać mi dwa scalenia plików, które chcę, ale tak nie jest. Odpowiednia część mojego .gitconfig:

[diff] 
    tool = kdiff3 
[difftool "kdiff3"] 
    cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3 $LOCAL $REMOTE --output $LOCAL 
    trustExitCode = false 
+1

Czy udało Ci się uciec przed '' $ ''w' $ LOCAL' i '$ REMOTE', lub przynajmniej umieścić' \ "' wokół '$ LOCAL' i' $ REMOTE'? – VonC

+0

Próbowałem tego i otrzymałem ten sam wynik. Dzięki za sugestię. –

Odpowiedz

7

mogę używać kdiff3 edytować plik w drzewo, jeśli mogę użyć następującego polecenia:

kdiff3 $LOCAL $REMOTE --output $MERGED 

kdiff3 jest w moim $PATH, więc ważne bit jest zmiana wyjścia z $LOCAL zamiast na $MERGED.

Z git-difftool manpage:

...the configured command line will be invoked with the following 
variables available: $LOCAL is set to the name of the temporary file 
containing the contents of the diff pre-image and $REMOTE is set to 
the name of the temporary file containing the contents of the diff 
post-image. $MERGED is the name of the file which is being compared. 

Ponieważ ustawienie wyjściowe do $LOCAL ma zamiar napisać do tymczasowego pliku, będziesz zamiast chcesz napisać do $MERGED ponieważ będzie rzeczywisty „local "plik w drzewie.

Powiązane problemy