git beyondcompare

Git Diff con Beyond Compare



beyondcompare (16)

Actualización para BC4 64bit: Esto funciona para Git para Windows v.2.16.2 y Beyond Compare 4 - v.4.2.4 (Edición de 64 bits)

Edité manualmente el archivo .gitconfig ubicado en mi raíz de usuario "C: / Users / MyUserName" y reemplacé las etiquetas diff / difftool y merge / mergetool con

[diff] tool = bc [difftool "bc"] path = ''C:/Program Files/Beyond Compare 4/BComp.exe'' [difftool "bc"] cmd = /"C:/Program Files/Beyond Compare 4/BComp.exe/" /"$LOCAL/" /"$REMOTE/" [difftool] prompt = false [merge] tool = bc [mergetool "bc"] path = ''C:/Program Files/Beyond Compare 4/BComp.exe'' [mergetool "bc"] cmd = /"C:/Program Files/Beyond Compare 4/BComp.exe/" /"$REMOTE/" /"$LOCAL/" /"$BASE/" /"$MERGED/"

Logré que Git comenzara Beyond Compare 3 como una herramienta diff, sin embargo, cuando hago un diff, el archivo con el que estoy comparando no se carga. Solo se carga la última versión del archivo y nada más, por lo que no hay nada en el panel derecho de Beyond Compare.

Estoy ejecutando git 1.6.3.1 con Cygwin con Beyond Compare 3. He configurado más allá de la comparación ya que sugieren en la parte de soporte de su sitio web con un script como el siguiente:

#!/bin/sh # diff is called by git with 7 parameters: # path old-file old-hex old-mode new-file new-hex new-mode "path_to_bc3_executable" "$2" "$5" | cat

¿Alguien más ha encontrado este problema y conoce una solución para esto?

Editar:
He seguido las sugerencias de VonC pero sigo teniendo exactamente el mismo problema que antes. Soy un poco nuevo en Git, así que quizás no estoy usando el diff correctamente.

Por ejemplo, estoy tratando de ver el diff en un archivo con un comando como este:
git diff main.css

Beyond Compare se abrirá y solo mostrará mi main.css actual en el panel izquierdo, no hay nada en el panel derecho. Me gustaría ver mi main.css actual en el panel izquierdo en comparación con HEAD, básicamente lo que he comprometido por última vez.

Mi git-diff-wrapper.sh se ve así:

#!/bin/sh # diff is called by git with 7 parameters: # path old-file old-hex old-mode new-file new-hex new-mode "c:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat

Mi configuración de git se parece a esto para Diff:

[diff] external = c:/cygwin/bin/git-diff-wrapper.sh


Aquí está mi archivo de configuración. Tomó un poco de lucha, pero ahora está funcionando. Estoy usando Windows Server, msysgit y más allá de comparar 3 (aparentemente una versión x86). Notarás que no necesito especificar ningún argumento, y uso "ruta" en lugar de "cmd".

[user] name = PeteW email = [email protected] [diff] tool = bc3 [difftool] prompt = false [difftool "bc3"] path = /c/Program Files (x86)/Beyond Compare 3/BComp.exe [merge] tool = bc3 [mergetool] prompt = false keepBackup = false [mergetool "bc3"] path = /c/Program Files (x86)/Beyond Compare 3/BComp.exe trustExitCode = true [alias] dt = difftool mt = mergetool


Ejecute estos comandos para Beyond Compare 2:

git config --global diff.tool bc2 git config --global difftool.bc2.cmd "/"c:/program files (x86)/beyond compare 2/bc2.exe/" /"$LOCAL/" /"$REMOTE/"" git config --global difftool.prompt false

Ejecute estos comandos para Beyond Compare 3:

git config --global diff.tool bc3 git config --global difftool.bc3.cmd "/"c:/program files (x86)/beyond compare 3/bcomp.exe/" /"$LOCAL/" /"$REMOTE/"" git config --global difftool.prompt false

Luego usa git difftool


Ejecute estos comandos para Beyond Compare 3 (si la ruta BCompare.exe es diferente en su sistema, reemplácela de acuerdo con la suya):

git config --global diff.tool bc3 git config --global difftool.bc3.cmd "/"c:/program files (x86)/beyond compare 3/BCompare.exe/" /"$LOCAL/" /"$REMOTE/"" git config --global difftool.prompt false

Luego usa git difftool


Gracias a @dahlbyk , el autor de Posh-Git , por publicar su configuración como una esencia . Me ayudó a resolver mi problema de configuración.

[diff] tool = bc3 [difftool] prompt = false [difftool "bc3"] cmd = /"c:/program files (x86)/beyond compare 3/bcomp.exe/" /"$LOCAL/" /"$REMOTE/" [merge] tool = bc3 [mergetool] prompt = false keepBackup = false [mergetool "bc3"] cmd = /"c:/program files (x86)/beyond compare 3/bcomp.exe/" /"$LOCAL/" /"$REMOTE/" /"$BASE/" /"$MERGED/" trustExitCode = true [alias] dt = difftool mt = mergetool


La página de soporte de Beyond Compare es un poco breve.

Verifique mi respuesta diff.external para más información (con respecto a la sintaxis exacta)

Extraer:

$ git config --global diff.external <path_to_wrapper_script>

en el símbolo del sistema, reemplazando con la ruta a " git-diff-wrapper.sh ", por lo que su ~/.gitconfig contiene

-->8-(snip)-- [diff] external = <path_to_wrapper_script> --8<-(snap)--

Asegúrese de usar la sintaxis correcta para especificar las rutas de acceso a la herramienta script y diff del wrapper, es decir, use slashed directo en lugar de barras diagonales inversas. En mi caso, tengo

[diff] external = c:/Documents and Settings/sschuber/git-diff-wrapper.sh

en .gitconfig y

"d:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat

en la secuencia de comandos envoltura.

Nota: también puedes usar git difftool .


La diferencia está en que se llama al ejecutable: configúralo para llamar a bcomp.exe y funcionará correctamente. Configure su entorno para llamar a bcompare.exe y terminará con el lado de la comparación tomado de su sistema de revisión que está vacío.


No uso archivos .sh de envoltura adicional. Mi entorno es Windows XP, git 1.7.1 en cygwin y Beyond Compare 3. Lo que sigue es mi archivo .git / config .

[diff] tool = bc3 [difftool] prompt = false [difftool "bc3"] #use cygpath to transform cygwin path $LOCAL (something like /tmp/U5VvP1_abc) to windows path, because bc3 is a windows software cmd = /"c:/program files/beyond compare 3/bcomp.exe/" "$(cygpath -w $LOCAL)" "$REMOTE" [merge] tool = bc3 [mergetool] prompt = false [mergetool "bc3"] #trustExitCode = true cmd = /"c:/program files/beyond compare 3/bcomp.exe/" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"

Luego, uso $ git difftool para comparar y $ git mergetool para fusionar.

Acerca de trustExitCode : para un comando de fusión personalizado, especifique si el código de salida del comando de fusión se puede usar para determinar si la fusión fue exitosa. Si no se establece en verdadero, la marca de tiempo del archivo de destino de fusión está marcada y se supone que la fusión tuvo éxito si el archivo se ha actualizado; de lo contrario, se solicita al usuario que indique el éxito de la fusión.


Para MAC después de hacer mucha investigación, ¡funcionó para mí! 1. Instale el más allá de comparar y esto se instalará en la ubicación de abajo

/ Aplicaciones / Más allá / Compare.app/Contents/MacOS/bcomp

Por favor, siga estos pasos para hacer que bc sea una herramienta de diff / merge en git http://www.scootersoftware.com/support.php?zz=kb_mac


Para la versión de git 2.15.1.windows.2 con BC2.exe.

La configuración a continuación finalmente funciona en mi máquina.

[difftool "bc2"] cmd = /"c:/program files/beyond compare 2/bc2.exe/" ${LOCAL} ${REMOTE}


Por alguna razón, para mí, el archivo tmp creado por git diff se estaba eliminando antes de que se abriera más allá de la comparación. Primero tuve que copiarlo en otra ubicación.

cp -r $2 "/cygdrive/c/temp$2" cygstart /cygdrive/c/Program/ Files/ /(x86/)/Beyond/ Compare/ 3/BCompare.exe "C:/temp$2" "$5"


Si está ejecutando Windows 7 (profesional) y Git para Windows (v 2.15 o superior), simplemente puede ejecutar debajo del comando para descubrir las diferentes herramientas de diferencias compatibles con su Git para Windows

git difftool --tool-help

Verá un resultado similar a este

git difftool --tool = ''se puede configurar a uno de los siguientes:
vimdiff vimdiff2 vimdiff3

significa que su git no admite (no puede encontrar) más allá de comparar como difftool en este momento.

Para que Git encuentre más allá de la comparación como difftool válido, debe tener el directorio de instalación Beyond Compare en su variable de entorno de ruta del sistema. Puede comprobar esto ejecutando bcompare desde shell (cmd, git bash o powershell. Estoy usando Git Bash). Si Beyond Compare no se inicia, agregue su directorio de instalación (en mi caso, C: / Program Files / Beyond Compare 4) a la variable de ruta del sistema. Después de esto, reinicia tu caparazón. Git mostrará Beyond Compare como posible opción de difftool. Puede utilizar cualquiera de los siguientes comandos para iniciar más allá de comparar como difftool (por ejemplo, para comparar cualquier archivo local con alguna otra rama)

git difftool -t bc branchnametocomparewith -- path-to-file or git difftool --tool=bc branchnametocomparewith -- path-to-file

Puede configurar más allá de la comparación como difftool predeterminado usando los comandos a continuación

git config --global diff.tool bc

Tenga en cuenta que bc en el comando anterior puede ser bc3 o bc en función de lo que Git pudo encontrar en la variable del sistema de ruta.


Tenga en cuenta que realiza un camino equivocado de $ 2. porque está bajo Cygwin pero BC3 no, por lo que debe especificar una ruta completa para ello. como "d: / cygwin $ 2"

Por favor, consulte mi git-diff-wrapper.sh aquí:

$ cat ~/git-diff-wrapper.sh #!/bin/sh echo $2 echo $5 /cygdrive/c/Program/ Files/ /(x86/)/Beyond/ Compare/ 3/BCompare.exe "d:/programs/cygwin$2" "$5"

Buena suerte.