2012-09-25 19 views
13

A menudo, cuando hago diffs, quiero editar mi archivo local antes de confirmar. Esto funciona muy bien en la vista de comparación de Eclipse, ya que le permite editar fácilmente el archivo local y copiar los cambios de la versión anterior.Usando kdiff3 para editar diffs con git

Estoy intentando configurar git y kdiff3 para que funcionen de la misma manera. Funciona como se esperaba cuando estoy usando kdiff3 como mi herramienta de mezcla. Sin embargo, cuando lo configuro como difftool, me da una vista de solo lectura, así que no puedo hacer ninguna modificación. De acuerdo con la documentación (http://kdiff3.sourceforge.net/doc/documentation.html) esperaría que la opción --output me diera la fusión de dos archivos que quiero, pero no es así. La parte pertinente de mi .gitconfig:

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

¿Has escapado de '' $ ''en' $ LOCAL' y '$ REMOTE', o al menos has puesto' \ "' alrededor de '$ LOCAL' y' $ REMOTE'? – VonC

+0

Lo intenté y obtuve el mismo resultado. Gracias por la sugerencia. –

Respuesta

7

puedo usar kdiff3 para editar el archivo en el árbol si utilizo el siguiente comando:

kdiff3 $LOCAL $REMOTE --output $MERGED 

kdiff3 está en mi $PATH, por lo que la parte importante es cambiar la salida de $LOCAL para que en su lugar sea $MERGED.

Desde la página de manual git-difftool:

...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. 

Desde el establecimiento de la salida a $LOCAL va a escribir en un archivo temporal , podrás vez desee escribir en $MERGED ya que será el real "local "archivo en el árbol.