Zwiększenie czytelności wyjścia różnicowego

12

Szukam narzędzia, które pobierze dane wyjściowe diff / debdiff ( a dokładniej dane wyjściowe tego skryptu ) i wyświetli wynik porównania w bardzo czytelny, graficzny sposób. Wszelkie wskazówki będą mile widziane.

Idealnie byłoby to GTK +, FOSS odpowiednik MDR .

Oprogramowanie Meld, Diffuse i podobne nie nadają się do tego celu, ponieważ mają działać samodzielnie i nie pobierają danych wejściowych ze standardowego wejścia.

mgunes
źródło

Odpowiedzi:

8

Kompare może to zrobić (i jest najlepszym IMO dla przeglądarek różnicowych):

./whatchanged package_name | kompare -

Zwróć uwagę na „-” podane jako argument pliku wejściowego. Większość programów * nix ma ten interfejs do przyjmowania danych potokowych, więc prawdopodobnie możesz użyć dowolnego z nich.

scottl
źródło
Tak, próbowałem tego z Meldem, ale dzieje się tak, że Meld jest uruchamiany natychmiast i otrzymuje pośrednie wyjście skryptu, zamiast uruchamiać się po zakończeniu skryptu i uzyskiwaniu wyniku różnicowego. Prawdopodobnie muszę dostosować przepływ skryptu, aby działał poprawnie z Meldem i innym oprogramowaniem, do którego jest przesyłany. Z „bzr diff” i zwykłym wyjściem diff, Meld jest uruchamiany w trybie VCS, a nie w trybie porównywania plików.
mgunes
Rozwiązałem problem trybu VCS, uruchamiając Meld z opcją -a. Kompare również działa. Pozostało tylko sprawić, by skrypt rozpoznawał potoki.
mgunes,
3

Jeśli masz tylko konsolę, colordiffjest to całkiem dobre rozwiązanie.

Aby go zainstalować, uruchom tę komendę sudo apt-get install colordiffw terminalu

Memento
źródło
2

Lubię używać wewnętrznego podświetlania składni vima jako pagera, aby móc wyświetlać różnicowane kolory. Na przykład umieszczając to w .bashrc:

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

(A następnie ponownie za .bashrcpomocą . ~/.bashrc.) Następnie możesz uruchomić vlessjako pager:

vless /path/to/your.diff

To nie jest graficzne, ale jest przynajmniej podświetlone.

Kees Cook
źródło
Ale nie poprosił o kolorowe pliki różnicowe, poprosił o graficzne różnice. Co wskazuje, że musisz być w stanie odczytać oryginalne pliki tak samo jak sam diff.
Martin Owens -doctormo-
Cóż, „odczyt ze standardowego” było wymaganiem. Jeśli wykluczono „Meld”, niewiele zostało. Inna odpowiedź, która tworzy różnicę i otwiera Meld, jest najlepszym wyborem dla grafiki. Lub może geditzamiast tego uruchomić .
Kees Cook
nie umieszczasz „sudo apt-get install vim” w .bashrc, edytuj, aby było jasne.
Capi Etheriel,
2

Chociaż aplikacja KDE może być instalowana bez zbyt wielu zależności, kdiff to niesamowite narzędzie do edycji / scalania różnic.

Johanna Larsson
źródło
1
Chociaż kdiff (znany również jako kdiff3 w archiwum ubuntu) jest doskonałym narzędziem, to również nie spełnia pytania OP, ponieważ szukają narzędzia, które zrobi różnicę na STDIN i wyświetli je, a po ograniczonej eksploracji zrobiłem, Nie mogłem znaleźć sposobu, aby to zrobić. Ponadto, jeśli problemem jest zmniejszenie zależności KDE, archiwum ubuntu zawiera kdiff3-qt, który zależy tylko od qt, a nie bibliotek ze stosu KDE.
Steve Beattie
2

Chciałbym użyć tego prostego skryptu, aby użyć meld (lub dowolnego innego istniejącego narzędzia), w ten sposób zyskujesz trochę elastyczności:

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

Testowane z meld i wyjściem z bzr diff, więc skopiowałem to do / usr / bin i chmod 755 i zrobiłem to:

bzr diff | meld-diff

Wyniki pokazują się zgodnie z oczekiwaniami.

Martin Owens -doctormo-
źródło
4
Chociaż nie jest to tak duży problem na komputerach dla jednego użytkownika, powinieneś bezpiecznie używać tymczasowego pliku i katalogu mktempi mktemp -dgenerować go bezpiecznie, choćby z innego powodu, abyś mógł wykonywać porównania na wielu drzewach jednocześnie, bez jednego zamykania inny.
Steve Beattie
Działa z bzr diff, ale tylko w trybie porównania katalogów. Chcę też móc porównywać poszczególne pliki. Spróbuję go dopracować, aby działał również ze moim skryptem, czego obecnie nie ma; dzięki.
mgunes
Zaznacz mnie, jeśli uważasz, że mój pomysł użycia skryptu jest dobry. Do tej pory byłem zbyt mocno oznaczony.
Martin Owens -doctormo-
1

Wiem, że nie pytasz o narzędzie różnicowe zintegrowane z edytorem, ale jestem pewien, że możesz uniknąć przełączania kontekstu (z edytora na terminal iz powrotem do edytora) po tym, jak dowiesz się trochę o tym, co może zaoferować twój edytor. Zarówno emacs, jak i vim są dostarczane z narzędziami różnicowymi.

  • W przypadku emacsa użyjesz Ediff Mode ( instalowany domyślnie). Zajrzyj na tę stronę wiki lub zapoznaj się z oficjalnym podręcznikiem

  • Korzystanie z emacsa jest proste, wystarczy wpisać Alt + xi wpisać ediff.

  • Możesz użyć ediff do przeglądania różnicy między gałęziami i wersjami swojego repozytorium (bzr, git, svn itp.).

crncosta
źródło
Czy miałbyś coś przeciwko pokazaniu szybkiego przykładu, jak ediff zdalnie śledzić oddział git za pomocą bieżącej kopii roboczej (wiele plików)?
mlt