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.