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.