ptc ims beyond bcompare git diff beyondcompare

ims - más allá de la comparación con `git difftool--dir-diff`-Cómo solucionar un problema con enlaces simbólicos



beyond compare ims (2)

Además de la sugerencia de sixtyfootersdude, otra opción es hacer que Beyond Compare siga los enlaces simbólicos. Esto alineará enlaces simbólicos con archivos del mismo nombre.

En la Comparación de carpetas , haga clic en el botón de la barra de herramientas Reglas (icono de árbitro). Vaya a la pestaña Manejo . Compruebe Seguir enlaces simbólicos .

Para hacer que esto afecte a todas las sesiones nuevas, cambie el menú desplegable en la parte inferior del cuadro de diálogo Usar para esta vista solo a Actualizar también los valores predeterminados de la sesión antes de hacer clic en Aceptar.

Configura un nuevo repositorio git y agrega algunos archivos:

[Feb-09 18:35][Desktop]$ mkdir exampleForStackOverflow [Feb-09 18:35][Desktop]$ cd exampleForStackOverflow/ [Feb-09 18:35][exampleForStackOverflow]$ git init Initialized empty Git repository in ~/Desktop/exampleForStackOverflow/.git/ [Feb-09 18:35][exampleForStackOverflow]$ touch foo.txt [Feb-09 18:35][exampleForStackOverflow]$ touch bar.txt [Feb-09 18:35][exampleForStackOverflow]$ touch baz.txt [Feb-09 18:36][exampleForStackOverflow]$ git add * [Feb-09 18:36][exampleForStackOverflow]$ git commit -m "Create files" [master (root-commit) 42bfa60] Create files 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 bar.txt create mode 100644 baz.txt create mode 100644 foo.txt

Modificar los archivos:

[Feb-09 18:37][exampleForStackOverflow]$ echo "Foo" > foo.txt [Feb-09 18:37][exampleForStackOverflow]$ echo "Bar" > bar.txt [Feb-09 18:37][exampleForStackOverflow]$ echo "Baz" > baz.txt

Estado actual:

[Feb-09 18:38][exampleForStackOverflow]$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: bar.txt modified: baz.txt modified: foo.txt no changes added to commit (use "git add" and/or "git commit -a")

DIF actual:

[Feb-09 18:38][exampleForStackOverflow]$ git diff diff --git a/bar.txt b/bar.txt index e69de29..ebd7525 100644 --- a/bar.txt +++ b/bar.txt @@ -0,0 +1 @@ +Bar diff --git a/baz.txt b/baz.txt index e69de29..a688182 100644 --- a/baz.txt +++ b/baz.txt @@ -0,0 +1 @@ +Baz diff --git a/foo.txt b/foo.txt index e69de29..bc56c4d 100644 --- a/foo.txt +++ b/foo.txt @@ -0,0 +1 @@ +Foo

Ahora con bcompare obtengo lo siguiente:

[Feb-09 18:38][exampleForStackOverflow]$ git difftool --dir-diff

Claramente este no es el comportamiento esperado. Los archivos no se alinean por lo que no se pueden ver las diferencias .

Estoy corriendo:

[Feb-09 18:44][exampleForStackOverflow]$ git --version git version 2.7.1 [Feb-09 18:44][exampleForStackOverflow]$ cat /etc/redhat-release CentOS release 6.6 (Final)

Más allá de la comparación: Version 4.1.3 (build 20814)

git config:

[Feb-09 18:45][exampleForStackOverflow]$ git config --list color.ui=true user.name=FOO [email protected] log.decorate=full diff.tool=bc3 difftool.bc3=trustExitCode merge.tool=bc3 mergetool.bc3=trustExitCode core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true

Pregunta: (De Ismail Badawi ) ¿Qué tiene esto que ver con los enlaces simbólicos?

Respuesta: Lo sentimos, la captura de pantalla no es muy clara, pero los archivos en el lado derecho son enlaces simbólicos. Vea abajo:

[Feb-09 18:52][exampleForStackOverflow]$ cd /tmp/git-difftool.RWDqE/right [Feb-09 18:52][right]$ ll total 0 lrwxrwxrwx 1 BAZ BAZ_g 54 Feb 9 18:51 bar.txt -> /home/BAZ/Desktop/exampleForStackOverflow/bar.txt lrwxrwxrwx 1 BAZ BAZ_g 54 Feb 9 18:51 baz.txt -> /home/BAZ/Desktop/exampleForStackOverflow/baz.txt lrwxrwxrwx 1 BAZ BAZ_g 54 Feb 9 18:51 foo.txt -> /home/BAZ/Desktop/exampleForStackOverflow/foo.txt


Usando esto funcionará:

git difftool --dir-diff --no-symlinks

Desde el git doc :

- [no-] enlaces simbólicos

El comportamiento predeterminado de git difftool es crear enlaces simbólicos al árbol de trabajo cuando se ejecuta en el modo --dir-diff y el lado derecho de la comparación produce el mismo contenido que el archivo en el árbol de trabajo.

Al especificar --no-symlinks, se indica a git difftool que cree copias en su lugar. --no-enlaces simbólicos es el predeterminado en Windows.