Rendre la sortie diff plus lisible


12

Je cherche un outil qui prendra la sortie diff / debdiff ( et plus précisément, la sortie de ce script ) et affichera le résultat de la comparaison d'une manière graphique très lisible. Tout pointeur serait apprécié.

Idéalement, ce serait l'équivalent GTK +, FOSS de MDR .

Les logiciels de fusion, de diffusion et similaires ne sont pas adaptés à cet objectif, car ils sont destinés à fonctionner de manière autonome et ne prennent pas d'entrée de stdin.

Réponses:


8

Kompare peut le faire (et est le meilleur IMO diff-viewer GUI):

./whatchanged package_name | kompare -

Notez le «-» donné comme argument de fichier d'entrée. La plupart des programmes * nix ont cette interface pour accepter l'entrée canalisée, vous pouvez donc probablement utiliser celui que vous aimez.


Oui, j'ai essayé avec Meld, mais ce qui se passe, c'est que Meld est lancé immédiatement et obtient la sortie intermédiaire du script, au lieu de se lancer une fois le script terminé et d'obtenir la sortie diff. J'ai probablement besoin d'ajuster le flux du script pour qu'il fonctionne correctement avec Meld et les autres logiciels vers lesquels il est acheminé. Et avec "bzr diff" et une sortie diff régulière, Meld est lancé en mode VCS, plutôt qu'en mode de comparaison de fichiers.
mgunes

J'ai résolu le problème du mode VCS en lançant Meld avec l'option -a. Kompare fonctionne également. Il ne reste plus qu'à rendre le script compatible avec les canaux.
mgunes

3

Si vous n'avez qu'une console, colordiffc'est une assez bonne solution.

Pour l'installer, exécutez cette commande sudo apt-get install colordiffdans un terminal


2

J'aime utiliser la coloration syntaxique interne de vim comme pager, pour pouvoir visualiser les différences colorisées. Par exemple, mettre ceci dans votre .bashrc:

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

(Et puis re-sourcez votre .bashrcavec . ~/.bashrc.) Ensuite, vous pouvez exécuter vlessvotre pager:

vless /path/to/your.diff

Ce n'est pas graphique, mais il est au moins mis en évidence.


Mais il n'a pas demandé de fichiers différentiels colorés, il a demandé des différences graphiques. Quels conseils dont vous avez besoin pour pouvoir lire les fichiers originaux autant que le diff lui-même.
Martin Owens -doctormo-

Eh bien, "lire depuis stdin" était une exigence. Si "Meld" a été exclu, il ne reste plus grand-chose. L'autre réponse qui crée le diff et ouvre Meld est le meilleur pari pour le graphique. Ou il pourrait être lancé à la geditplace.
Kees Cook

vous ne mettez pas "sudo apt-get install vim" dans votre .bashrc, veuillez le modifier pour qu'il soit clair.
Capi Etheriel

2

Bien qu'une application KDE puisse être installée sans TROP de dépendances, kdiff est un formidable outil d'édition / fusion de diff.


1
Bien que kdiff (alias kdiff3 dans l'archive ubuntu) soit un excellent outil, il ne répond pas non plus à la question du PO, car ils recherchent un outil qui prendra un diff sur STDIN et l'affichera, et d'après l'exploration limitée que j'ai faite, Je ne pouvais pas voir un moyen de le faire. De plus, si la réduction des dépendances de KDE est un problème, l'archive ubuntu inclut kdiff3-qt, qui dépend uniquement de qt et non des bibliothèques de la pile KDE.
Steve Beattie

2

J'utiliserais ce script simple pour utiliser meld (ou l'un des autres outils existants), de cette façon, vous obtenez un peu de flexibilité:

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

Testé avec meld et la sortie de bzr diff, donc copié ceci dans / usr / bin et chmod 755 et je l'ai fait:

bzr diff | meld-diff

Les résultats montrent comme prévu.


4
Bien que ce ne soit pas autant un problème sur les machines mono-utilisateur, vous devez utiliser mktempet mktemp -dgénérer votre fichier temporaire et votre répertoire en toute sécurité, si ce n'est pour une autre raison que pour pouvoir effectuer des différences sur plusieurs arborescences en même temps sans un seul clobbering L'autre.
Steve Beattie

Il fonctionne avec bzr diff, mais uniquement en mode de comparaison de répertoires. Je souhaite également pouvoir comparer des fichiers individuels. Je vais essayer de l'affiner pour qu'il fonctionne également avec mon script, ce qui n'est pas le cas actuellement; Merci.
mgunes

Marquez-moi si vous pensez que mon idée d'utiliser le script est bonne. Jusqu'à présent, j'ai trop marqué.
Martin Owens -doctormo-

1

Je sais que vous ne demandez pas un outil de diff intégré à un éditeur, mais je suis sûr que vous pouvez éviter le changement de contexte (de l'éditeur au terminal, et revenir à l'éditeur) après avoir appris un peu ce que votre éditeur peut fournir. Emacs et vim sont fournis avec des outils diff.

  • Pour le cas emacs , vous utiliserez le mode Ediff (installé par défaut). Regardez cette page wiki ou consultez le manuel officiel

  • Utiliser emacs est simple, il suffit de taper Alt + xet de taper ediff.

  • Vous pouvez utiliser ediff pour explorer la différence entre les branches et les révisions de votre référentiel (bzr, git, svn, etc.).


Pourriez-vous montrer un exemple rapide de la façon dont ediff a suivi à distance la branche git avec une copie de travail actuelle (plusieurs fichiers)?
mlt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.