¿Cómo puedo sacar el máximo provecho de mi dinero con el comando "diff"?

9

He intentado usar el diffcomando linux en el pasado sin mucha suerte o paciencia. Por lo general, termino usando una utilidad GUI como DiffMerge o Kdiff.

Recientemente comencé a intentar usar de diffnuevo para comparar archivos en sistemas remotos a través de ssh, y he encontrado que la -y / --side-by-sideopción es muy útil, pero todavía siento que no estoy aprovechando al máximo esta utilidad.

Tengo curiosidad por saber cómo lograr lo siguiente:

  1. Resalte los cambios o utilice la codificación de colores para que la salida sea más legible
  2. Fusionar: seleccione líneas con diferencias y realice los cambios en uno de los archivos

Además, no he encontrado muchos buenos ejemplos cuando busco en Google, así que si tiene algunos secretos de Linux-fu para aprovechar al máximo las diferencias, ¿podría compartir? Voy a comparar principalmente archivos de configuración basados ​​en texto, pero cualquier truco y consejo sería maravilloso.

Para referencia : la utilidad DiffMerge muestra fácilmente los cambios uno al lado del otro con resaltado de color. Los íconos en la parte superior le permiten cambiar entre las vistas de "mostrar todo", "mostrar diferencias" y "mostrar diferencias con el contexto". Me encantaría parte de esta funcionalidad en el símbolo del sistema.

PD: También debo señalar que otra opción que encuentro bastante útil es la --suppress-common-linesque aprendí en esta publicación de blog concisa y legible .

cwd
fuente
3
Yo uso vimdiff bastante.
nicerobot el
@nicerobot Puede publicar esto como respuesta: es una herramienta muy útil y útil.
rozcietrzewiacz
No puedes, es gratis ... Lo siento, no pude evitarlo: D
whoami
Hago la mayor parte de mi difusión en Emacs.
Gilles 'SO- deja de ser malvado'
@whoami: ¿qué?
cwd

Respuestas:

9

En ninguna secuencia particular:

  • meld es un programa diff muy bueno que hace muy buenos diffs y combinaciones de tres vías.
  • git config --global merge.conflictstyle diff3le ofrece una salida de combinación de tres vías para usar con herramientas como meld.
  • wdiffhace la palabra diffs, muy agradable si está coloreado :wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" ...
  • Para minimizar el cruft en la diffsalida, generalmente uso la opción --ignore-all-space( -w)
  • diff-ignore-moved-lines* hace lo que dice en la etiqueta.
  • difff* se puede usar para diferenciar solo las líneas que coinciden en campos determinados.

* Descargo de responsabilidad: soy el autor, y los desarrollé para ayudar con la CLI y la GUI que difieren y se fusionan.

l0b0
fuente
1
Yo también uso diffusebastante.
Arcege
diff -u también es bastante sencillo, creo.
Gabe.
3

Para colorear en el diff, debe mirar http://colordiff.sourceforge.net/ . Esto es solo una envoltura alrededor de diff y, como tal, todas las opciones de comando aún funcionan.

En caso de que tenga ubuntu simplemente escriba:

    # sudo apt-get install colordiff

Corriendo el riesgo de no cumplir con su caso de uso, gites un VCS muy agradable que se integra bien con muchas herramientas diferentes y de fusión (tanto de línea de comandos como de GUI). Pruébalo si es una opción.

Alexandre Martins
fuente
1

Tratar sdiff

difftambién tiene opciones ( -eo -ed) para crear un script de fusión para usar coned

sdiff, diffy eddebe ser parte de su caparazón donde quiera que vaya.

El software de control de versiones, probablemente, también tiene una diffy la mergeherramienta incorporada.

adam f
fuente