Зробити різний вихід більш читабельним


12

Я шукаю інструмент, який візьме різний / дедіффічний вихід ( а точніше, вихід цього сценарію ) і відобразить результат порівняння у легко читається, графічному вигляді. Будь-які вказівки будуть вдячні.

В ідеалі було б GTK +, FOSS еквівалент MDR .

Meld, Diffuse та подібне програмне забезпечення не підходять для цієї мети, оскільки вони призначені для роботи в автономному режимі і не беруть участь від stdin.

Відповіді:


8

Kompare може це зробити (і це найкращий ІМО для перегляду графічного інтерфейсу):

./whatchanged package_name | kompare -

Зверніть увагу на "-", вказане як аргумент вхідного файлу. Більшість програм * nix мають цей інтерфейс, щоб приймати трубопровідний вхід, тому ви, ймовірно, можете використовувати той, який вам подобається.


Так, я спробував це з Meld, але те, що трапляється, полягає в тому, що Meld запускається негайно і отримує проміжний вихід сценарію, замість того, щоб запускати, як тільки сценарій закінчується і отримує різний вихід. Напевно, мені потрібно налаштувати потік сценарію, щоб він працював належним чином з Meld та іншим програмним забезпеченням, на яке він знаходиться. І з "bzr diff" і регулярним розведенням диференційованих даних Meld запускається в режимі VCS, а не в режимі порівняння файлів.
mgunes

Я вирішив проблему режиму VCS, запустивши Meld з опцією -a. Kompare працює також. Залишилося лише зрозуміти, що сценарій не обізнаний.
mgunes

3

Якщо у вас є лише консоль, colordiffце досить хороше рішення.

Щоб його встановити, запустіть цю команду sudo apt-get install colordiffв терміналі


2

Мені подобається використовувати підкреслення внутрішнього синтаксису vim як пейджер, так що я можу переглянути кольорові різниці. Наприклад, додавши це до свого .bashrc:

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

(А потім повторно джерела ваш .bashrcз . ~/.bashrc.) Після цього ви можете запустити в vlessякості пейджера:

vless /path/to/your.diff

Це не графічно, але принаймні виділено.


Але він не запитував кольорові файли diff, він запитував графічні розбіжності. Що натякає на те, що вам потрібно вміти читати оригінальні файли стільки ж, скільки й сам diff.
Мартін Оуенс -доктормо-

Ну, "читати з stdin" було вимогою. Якщо "Meld" виключено, залишилося не так багато. Інша відповідь, яка створює diff і відкриває Meld, - найкраща ставка для графічного. Або geditзамість цього можна запустити .
Кіс Кук

ви не ставите "sudo apt-get install vim" у свій .bashrc, будь ласка, відредагуйте, щоб це було зрозуміло.
Capi Etheriel

2

Хоча додаток KDE, його можна встановити без багатьох залежностей від TOO, kdiff - це дивовижний інструмент різного редагування / злиття.


1
Хоча kdiff (він же kdiff3 в архіві ubuntu) - чудовий інструмент, він теж не задовольняє питання ОП, оскільки вони шукають інструмент, який буде приймати різницю на STDIN і відображати його, і з обмеженого вивчення, що я робив, Я не міг побачити спосіб зробити це. Крім того, якщо зменшення залежностей від KDE є проблемою, архів ubuntu включає kdiff3-qt, який залежить лише від qt, а не від бібліотек зі стеку KDE.
Стів Бітті

2

Я використовував би цей простий скрипт для використання meld (або будь-якого з інших існуючих інструментів), таким чином ви отримуєте трохи гнучкості:

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

Тестували з meld та висновком з bzr diff, тому скопіювали це в / usr / bin та chmod 755, і я це зробив:

bzr diff | meld-diff

Результати показують, як очікувалося.


4
Хоча це не так багато проблем на машинах, що користуються одним користувачем, ви повинні безпечно використовувати mktempта mktemp -dгенерувати тимчасові файли та каталоги, якщо не з іншої причини, щоб ви могли одночасно виконувати різні дерева на безлічі дерев, не маючи одного клобінгу інші.
Стів Бітті

Він працює з bzr diff, але лише в режимі порівняння каталогів. Я хочу мати можливість порівнювати і окремі файли. Я спробую вдосконалити його, щоб насправді також працював із моїм сценарієм, чого він наразі не робить; Дякую.
mgunes

Позначте мене, якщо ви вважаєте, що моя ідея використання сценарію хороша. Поки що мене занадто багато відзначили.
Мартін Оуенс -доктормо-

1

Я знаю, що ви не запитуєте інструмент різного інтеграції до редактора, але я впевнений, що ви можете уникнути переключення контексту (від редактора до терміналу та назад до редактора), після того, як трохи дізнаєтесь, що може запропонувати ваш редактор. І emacs, і vim мають різні інструменти.

  • Для випадку emacs ви будете використовувати режим Ediff (встановлений за замовчуванням). Подивіться на цю сторінку wiki або зверніться до офіційного посібника

  • Використовувати emacs просто, просто введіть Alt + xта введіть ediff.

  • Ви можете використовувати ediff для перегляду різниці між гілками та ревізіями вашого сховища (bzr, git, svn тощо).


Не хотіли б показати короткий приклад, як вилучити віддалену відслідковувану гілку git за допомогою поточної робочої копії (декілька файлів)?
mlt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.