Jak otwierać lokalne pliki do różnicowania w Kompare z wiersza poleceń?

2

Kiedy używam melddo uzyskania wizualnego porównania, mogę po prostu uruchomić to z wiersza poleceń:

$ meld file1.txt file2.txt

... i melduruchamia się, ładuje każdy plik do osobnego okna podrzędnego i pokazuje różnice obok siebie.

Próbuję zrobić to samo z Kompare:

$ kompare file1.txt file2.txt

... ale pojawia się błąd: „ Could not parse diff output.”. Ten sam błąd dotyczy:

$ kompare -c file1.txt file2.txt
$ kompare -c file:///path/to/file1.txt file:///path/to/file2.txt

Próbowałem też:

$ diff file1.txt file2.txt | kompare -o - 

... nie powoduje to błędu - ale pokazuje folder źródłowy / docelowy jako „ unknown” (a poza tym wszystko inne jest puste) ?!

 

Czy w ogóle można korzystać z Kompare tak, jak zamierzam? Jeśli tak, jak należy sformatować wiersz poleceń?

Wielkie dzięki z góry za wszelkie odpowiedzi, Na
zdrowie!

 

Edycja: wiąże się z tym mnóstwo błędów, jak się okazuje:

... może być czymkolwiek z tego, tak myślę ...

 

Edycja2: chyba się zbliża; ponieważ jest to OpenSuse 11.2,

> kompare --version
Qt: 4.5.3
KDE: 4.3.1 (KDE 4.3.1) "release 6"
Kompare: 4.0.0
> diff --version
diff (GNU diffutils) 2.8.7-cvs

... Próbowałem poszukać łatek w systemie:

> find / -xdev -name "*.patch" 2>/dev/null
...
/etc/YaST2/policy.patch
/etc/YaST2/liveinstall.patch

... więc próbowałem zobaczyć jeden z nich:

kompare -o /etc/YaST2/policy.patch

... a ten przynajmniej otwiera się i pokazuje pewne różnice kompare, więc przynajmniej istnieje plik porównawczy diff do porównania ...

sdaau
źródło

Odpowiedzi:

2

Próbować

$ kompare -c file1.txt file2.txt

Powodem, dla którego polecenie piped nie działa, jest to, że z powodów historycznych diffnie tworzy on formatu łaty, do którego przywykliśmy większość z kontekstu +i -. Musisz użyć, diff -uaby uzyskać to:

$ diff -u file1.txt file2.txt | kompare -o -
stharward
źródło
Dzięki za to, @stharward - odnotowano w OP, że się kompare -Cnie udaje; Właśnie próbowałem diff -ui ten też się nie udaje :( Przynajmniej udało mi się znaleźć domyślne łatki systemowe, które otwierają się w Kompare, więc mogę ich użyć do porównania ... Pozdrawiam!
sdaau
1
@sdaau: Możesz także spróbować użyć kdiff3 zamiast kompare, co dobrze zrobi z 2-diffs. Właściwie wolę kdiff3, ponieważ jego nawigacja za pomocą klawiatury jest lepsza.
stharward
1

Myślę, że rozumiem...

Mój problem polega na tym, że chciałem różnicować pliki VHDL; w VHDL komentarz to dwa znaki minus; więc powiedz, że miałem ten komentarz w pliku file1.vhd:

...
-- my comment A
...

i zastąpiłem to tym w file2.vhd

...
-- my comment B
...

Tak więc teraz, jeśli uruchomię ujednolicony plik różnicowy na tych dwóch plikach, otrzymam coś takiego:

--- path/to/file1.vhd   2011-11-09 11:15:46.800513032 +0000
+++ path/to/file2.vhd   2011-11-09 12:17:35.764027670 +0000
@@ -1,5 +1,5 @@
 ...
--- my comment A
+-- my comment B
 -- ...
 -- ...
 --

 

Zauważ, że? The -from diff(co oznacza „usunięto ten wiersz”), połączone z --(które były oryginalną treścią: komentarze w .vhdpliku) - aby utworzyć, ---który pod względem diffidentyfikatora pliku (patrz pierwszy wiersz we fragmencie powyżej)!

 

Zatem, ponieważ Kompare nie „otwarcie” plików, nawet za pomocą GUI - nawet jeśli podasz dwa pliki, Kompare najpierw najwyraźniej uruchamia je przez diff, a następnie próbuje parsować ten diff - najwyraźniej najpierw szukając +++i ---do identyfikacji plików uczestniczących; co powoduje, że „linia komentarza VHDL” jest błędnie interpretowana. Aby to pokazać, po prostu musiałem wstawić spację do pliku diff:

- -- my comment A

... a potem może się załadować w Kompare.

Cóż, to najwyraźniej oznacza, że ​​musiałbym teraz wciąć wszystkie moje pliki * .vhd, aby były kompatybilne z diff->Komparepotokiem ...

sdaau
źródło