Różnica wizualna dla wielu par plików w systemie Linux

4

Potrzebuję programu GUI dla systemu Linux (Ubuntu Karmic) tkdiff , który może wyświetlać 2 pliki obok siebie i podświetlać różne linie, i akceptuje wiele par plików w wierszu poleceń, ale wyświetla tylko jedną parę plików jednocześnie i pozwala mi przeskoczyć do następnej lub poprzedniej pary plików naciskając klawisz. Który program jest najlepszy?

próbowałem tkdiff i meld , ale wydaje się, że niemożliwe jest podanie więcej niż 2 plików w wierszu polecenia.

pts
źródło
3
Wierzę, że starsze wersje tkdiff (3.x) miały tę funkcję, a nowsze (4.x) nie.

Odpowiedzi:

2

Walczę także z wieloparowymi różnicami TkDiff. Do tej pory udało mi się uzyskać bardzo mało pomocny:

Error: you specified 6 file(s) and 0 revision(s)

... ale dodam tutaj moje doświadczenie i kilka uwag.

Doskonałość tutaj w pracy jest dla mnie odpowiednia.

Oto co ps mówi o ładnie działającym wieloparowym Perforce (Przeniosłem każdy oddzielny element argv na jego własną linię):

wish
/tools/eng/perforce/tkdiff.tcl
--
:
/tmp/g4-60077/cache/depot/path/to/file1#740
/home/douglasdd/work/src1/path/to/file1
:
/tmp/g4-60077/cache/depot/path/to/file2#15
/home/douglasdd/work/src1/path/to/file2

Na tej podstawie zgaduję, że część tego, co brakuje w odpowiedzi Leona powyżej, to „-” i „:” przed pierwszą parą plików. ALE to nie wystarczy.

Nasza perfekcyjna wersja TkDiff jest starożytna (3.0x), więc próbuję użyć mojej lokalnie zainstalowanej wersji 4.1.x. Ale do tej pory nie ma szczęścia ...

Ręczne uruchomienie tej funkcji:

wish /tools/eng/perforce/tkdiff.tcl -- : "/tmp/g4-60077/cache/depot/path/to/file1#740" /home/douglasdd/work/src1/path/to/file1 : "/tmp/g4-60077/cache/depot/path/to/file2#15" /home/douglasdd/work/src1/path/to/file2

Ale ręczne uruchomienie tego nie powiedzie się:

wish /usr/local/bin/tkdiff -- : "/tmp/g4-60077/cache/depot/path/to/file1#740" /home/douglasdd/work/src1/path/to/file1 : "/tmp/g4-60077/cache/depot/path/to/file2#15" /home/douglasdd/work/src1/path/to/file2

... ze strasznym:

Error: you specified 6 file(s) and 0 revision(s)

Z czego zmuszam się zastanawiać, czy może Perforce ma własną, zhakowaną wersję TkDiff ??

Przepraszam, że to nie pomaga.

DouglasDD
źródło
1

Spróbuj uporządkować pliki tak, aby miały tę samą nazwę w różnych katalogach, tj. Porównując foo/file1 z bar/file1, foo/file2 z bar/file2itd. Możesz użyć dowiązań symbolicznych. Następnie użyj narzędzia do porównywania, które rozumie porównanie katalogów. Emacs jest jednym z takich narzędzi (menu „Narzędzia / Porównaj / Dwa katalogi” lub M-x ediff-directories ).

Gilles
źródło
Dziękujemy za zaproponowanie tego obejścia. Wciąż jednak szukam prostszego rozwiązania, które pozwala uniknąć tworzenia plików tymczasowych (lub dowiązań symbolicznych) i katalogów, po prostu w celu porównania wielu plików.
pts
0

lubię kdiff3 potrafi zrobić 2 lub 3 pliki - i porównać katalogi.

Adam Butler
źródło
To nie odpowiada na moje pytanie. Wiele narzędzi do porównywania może porównać 2 lub 3 pliki. Interesuje mnie narzędzie diff, które może porównać więcej niż 1 parę plików, co mogę określić w wierszu poleceń.
pts
przepraszam, nie znam żadnego narzędzia, które to robi - byłoby łatwo napisać mały skrypt, który wywołuje kdiff lub podobny dla każdej pary przekazywanych do niego plików
Adam Butler
1
Dzięki za wymyślenie drugiej sugestii (skryptu powłoki, który wywołuje kdiff wiele razy), ale nadal nie odpowiada na moje pytanie. W moim pytaniu wyraźnie określam wymaganie, aby program `` pozwalał mi przeskakiwać do następnej lub poprzedniej pary plików, naciskając klawisz ''.
pts
0

Ponieważ nikt nie może zasugerować narzędzia odpowiadającego moim wymaganiom, prawdopodobnie nie ma żadnego.

pts
źródło
0

tkdiff jest naprawdę słabo udokumentowany, ale wygląda na to, że jeśli rozdzielisz pary plików dwukropkiem, zrobi to różnicę, którą chcesz. Na przykład.

tkdiff a.1 a.2 : b.1 b.2 : c.1 c.2
Leon
źródło
To nie działa z tkdiff 4.1.4, dostaję `Podałeś 5 plików i 0 wersji (ów)
pts
-1

meld to bardzo ładne narzędzie do porównywania różnych plików, a nawet struktur katalogów.

Aby różnicować wiele plików:

meld $file1 $file2 $file3

Aby odróżnić dwa różne katalogi:

meld $dir1 $dir2
Pooja J
źródło
Dziękujemy za próbę pomocy. Nie rozumiem, jak to odpowiada mojemu pytaniu. Dokładniej: jak określić wiele par plików dla meld ?
pts