Rendere l'output diff più leggibile


12

Sto cercando uno strumento che prenderà l'output diff / debdiff ( e più specificamente, l'output di questo script ) e mostrerà il risultato del confronto in un modo altamente leggibile e grafico. Qualsiasi suggerimento sarebbe apprezzato.

Idealmente, sarebbe GTK +, l'equivalente FOSS di MDR .

Combinazione, software diffuso e simili non sono adatti a questo scopo, poiché sono progettati per funzionare autonomamente e non prendono input dallo stdin.

Risposte:


8

Kompare può farlo (ed è il miglior IMO del diff-viewer per la GUI):

./whatchanged package_name | kompare -

Nota '-' dato come argomento del file di input. La maggior parte dei programmi * nix ha questa interfaccia per accettare l'input in pipe, quindi puoi probabilmente usare quello che preferisci.


Sì, l'ho provato con Meld, ma ciò che accade è che Meld viene avviato immediatamente e ottiene l'output intermedio dello script, invece di avviarlo una volta terminato lo script e ottenere l'output diff. Probabilmente ho bisogno di regolare il flusso dello script per funzionare correttamente con Meld e altri software a cui viene inviato. E con "bzr diff" e un normale output diff, Meld viene lanciato in modalità VCS, piuttosto che in modalità confronto file.
— mgunes,

Ho risolto il problema della modalità VCS avviando Meld con l'opzione -a. Anche Kompare funziona. Non resta che rendere lo script in grado di riconoscere la pipe.
— mgunes,

3

Se hai solo una console, colordiffè una soluzione abbastanza buona.

Per installarlo, eseguire questo comando sudo apt-get install colordiffin un terminale


2

Mi piace usare l'evidenziazione della sintassi interna di vim come cercapersone, in modo da poter visualizzare le differenze colorate. Ad esempio, inserendo questo nel tuo .bashrc:

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

(E quindi rinominare il tuo .bashrccon . ~/.bashrc.) Quindi puoi eseguire vlesscome cercapersone:

vless /path/to/your.diff

Non è grafico, ma è almeno evidenziato.


Ma non ha chiesto file diff colorati, ha chiesto differenze grafiche. Quale suggerimento è necessario per poter leggere i file originali tanto quanto il diff stesso.
— Martin Owens -ottoco-

Bene, "leggere dallo stdin" era un requisito. Se "Meld" è stato escluso, non rimane molto. L'altra risposta che crea il diff e apre Meld è la migliore scommessa per grafica. O potrebbe geditinvece lanciarsi .
— Kees Cook,

non stai inserendo "sudo apt-get install vim" nel tuo .bashrc, per favore modifica per chiarire.
— Capi Etheriel,

2

Sebbene un'applicazione KDE possa essere installata senza troppe dipendenze, kdiff è un fantastico strumento di modifica / unione delle differenze.


1
Mentre kdiff (aka kdiff3 nell'archivio ubuntu) è un ottimo strumento, anche questo non soddisfa la domanda dell'OP, in quanto stanno cercando uno strumento che prenderà una differenza su STDIN e lo visualizzerà, e dall'esplorazione limitata che ho fatto, Non riuscivo a vedere un modo per farlo. Inoltre, se ridurre le dipendenze di KDE è un problema, l'archivio ubuntu include kdiff3-qt, che dipende solo da qt e non dalle librerie dallo stack di KDE.
— Steve Beattie,

2

Vorrei usare questo semplice script per usare meld (o uno qualsiasi degli altri strumenti esistenti), in questo modo otterresti un po 'di flessibilità:

#!/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

Testato con meld e l'output di bzr diff, quindi l'ho copiato in / usr / bin e chmod 755 e ho fatto questo:

bzr diff | meld-diff

I risultati mostrano come previsto.


4
Anche se non è un grosso problema su macchine a utente singolo, dovresti usare mktempe mktemp -dgenerare il tuo file e directory temporanei in modo sicuro, se non altro per poter eseguire differenze su più alberi contemporaneamente senza un clobbering l'altro.
— Steve Beattie,

Funziona con bzr diff, ma solo in modalità confronto directory. Voglio essere in grado di confrontare anche i singoli file. Proverò a perfezionarlo per funzionare davvero anche con la mia sceneggiatura, cosa che al momento non funziona; Grazie.
— mgunes,

Contrassegnami se pensi che la mia idea di usare la sceneggiatura sia buona. Finora sono stato marcato troppo.
— Martin Owens -doctormo-

1

So che non ti viene chiesto uno strumento diff integrato in un editor, ma sono sicuro che puoi evitare il cambio di contesto (dall'editor al terminale e viceversa all'editor) dopo aver appreso un po 'di ciò che il tuo editor può fornire. Entrambi, emacs e vim sono dotati di strumenti diff.

  • Per emacs case, utilizzerai la modalità Ediff (installata di default). Guarda questa pagina wiki o consulta il manuale ufficiale

  • Usare emacs è semplice, basta digitare Alt + xe digitare ediff.

  • Puoi usare ediff per la differenza del browser tra i rami e le revisioni del tuo repository (bzr, git, svn, ecc.).


Ti dispiacerebbe mostrare un rapido esempio di come modificare in remoto il tracciamento di git branch con una copia funzionante (file multipli)?
— mlt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.