Hacer que la salida diff sea más legible

12

Estoy buscando una herramienta que tome la salida diff / debdiff ( y más específicamente, la salida de este script ) y muestre el resultado de la comparación de una manera gráfica y altamente legible. Cualquier indicador sería apreciada.

Idealmente, sería el GTK +, FOSS equivalente de MDR .

Meld, Diffuse y un software similar no son aptos para este propósito, ya que están diseñados para funcionar de forma independiente y no reciben información de stdin.

mgunes
fuente

Respuestas:

8

Kompare puede hacer esto (y es la mejor IMO del visor de diferencias de GUI):

./whatchanged package_name | kompare -

Tenga en cuenta el '-' dado como argumento del archivo de entrada. La mayoría de los programas * nix tienen esta interfaz para aceptar entradas canalizadas, por lo que probablemente pueda usar la que desee.

scottl
fuente
Sí, lo intenté con Meld, pero lo que sucede es que Meld se inicia inmediatamente y obtiene la salida intermedia del script, en lugar de ejecutarse una vez que el script finaliza y obtiene la salida diff. Probablemente necesito ajustar el flujo del script para que funcione correctamente con Meld y otro software al que está conectado. Y con "bzr diff" y salida de diff regular, Meld se inicia en modo VCS, en lugar de modo de comparación de archivos.
mgunes
Resolví el problema del modo VCS iniciando Meld con la opción -a. Kompare también funciona. Todo lo que queda es hacer que el script tenga en cuenta.
mgunes
3

Si solo tienes una consola, colordiff es una solución bastante buena.

Para instalarlo, ejecute este comando sudo apt-get install colordiffen una terminal

Mnementh
fuente
2

Me gusta usar el resaltado de sintaxis interna de vim como un buscapersonas, para poder ver las diferencias coloreadas. Por ejemplo, poniendo esto en su .bashrc:

sudo apt-get install vim
alias vless='vim -u /usr/share/vim/vimcurrent/macros/less.vim'

(Y luego volver a su fuente .bashrccon . ~/.bashrc.) A continuación, puede funcionar vlesscomo su buscapersonas:

vless /path/to/your.diff

No es gráfico, pero al menos está resaltado.

Kees Cook
fuente
Pero no pidió archivos diff de colores, pidió diferencias gráficas. Lo que sugiere que necesita poder leer los archivos originales tanto como el diff en sí.
Martin Owens -doctormo-
Bueno, "leer de stdin" era un requisito. Si se ha descartado "Meld", no queda mucho. La otra respuesta que crea el diff y abre Meld es la mejor apuesta para gráficos. O podría lanzarse en su geditlugar.
Kees Cook
no está poniendo "sudo apt-get install vim" en su .bashrc, edítelo para que quede claro.
Capi Etheriel
2

Aunque una aplicación de KDE se puede instalar sin DEMASIADAS dependencias, kdiff es una increíble herramienta de edición / fusión de diferencias.

Johanna Larsson
fuente
1
Si bien kdiff (también conocido como kdiff3 en el archivo de ubuntu) es una gran herramienta, tampoco satisface la pregunta del OP, ya que están buscando una herramienta que tome una diferencia en STDIN y la muestre, y de la exploración limitada que hice, No pude ver una manera de hacerlo. Además, si reducir las dependencias de KDE es un problema, el archivo ubuntu incluye kdiff3-qt, que solo depende de qt y no de las bibliotecas de la pila de KDE.
Steve Beattie
2

Usaría este script simple para usar meld (o cualquiera de las otras herramientas existentes), de esa manera obtienes un poco de flexibilidad:

#!/bin/bash

TMPDIR=`mktemp -d`
DIFF_FILE=`mktemp`
TARGET='./'

cat /proc/$$/fd/0 > $DIFF_FILE
cd $TARGET
rsync -apvz --delete --stats --compress --progress $TARGET $TMPDIR
patch -R -p0 -d $TMPDIR < $DIFF_FILE
meld $TARGET $TMPDIR

Probado con meld y la salida de bzr diff, así que copié esto en / usr / bin y chmod 755 e hice esto:

bzr diff | meld-diff

Los resultados se muestran como se esperaba.

Martin Owens -doctormo-
fuente
44
Si bien no es tanto un problema en máquinas de un solo usuario, debe usar mktempy mktemp -dgenerar su archivo y directorio temporal de manera segura, si no es por otra razón que no sea para que pueda realizar diferencias en varios árboles al mismo tiempo sin un solo golpe el otro.
Steve Beattie
Funciona con bzr diff, pero solo en modo de comparación de directorios. Quiero poder comparar archivos individuales también. Trataré de refinarlo para que realmente funcione con mi script también, lo que no funciona en este momento; Gracias.
mgunes
Marcarme si crees que mi idea de usar el script es buena. Hasta ahora me han marcado demasiado.
Martin Owens -doctormo-
1

Sé que no está pidiendo una herramienta de diferencias integrada en un editor, pero estoy seguro de que puede evitar el cambio de contexto (de editor a terminal y de regreso al editor) después de aprender un poco sobre lo que su editor puede proporcionar. Tanto emacs como vim vienen con herramientas diff.

  • Para el caso de emacs , usará el modo Ediff (instalado por defecto). Mira esta página wiki o consulta el manual oficial

  • Usar emacs es simple, solo escribe Alt + xy escribe ediff.

  • Puede usar ediff para buscar diferencias entre ramas y revisiones de su repositorio (bzr, git, svn, etc.).

crncosta
fuente
¿Le importaría mostrar un ejemplo rápido de cómo construir remotamente la rama de git con una copia de trabajo actual (múltiples archivos)?
mlt