2

Когда я использую meld для получения визуального различия, я могу просто запустить это из командной строки:

$ meld file1.txt file2.txt

... и начинается meld , загружает каждый файл в отдельном подокне и показывает различия рядом.

Я пытаюсь сделать то же самое с Компаре:

$ kompare file1.txt file2.txt

... но я получаю сообщение об ошибке: " Could not parse diff output. " И та же ошибка имеет место для:

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

Я также попробовал:

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

... это не вызывает ошибки - но показывает папку Source/Destination как " unknown " (а в остальном все остальное пусто)?!

 

Можно ли вообще использовать Kompare, как я собирался? Если так, как должна быть отформатирована командная строка?

Большое спасибо заранее за любые ответы,
Ура!

 

Изменить: есть куча ошибок, связанных с этим, получается:

... может быть что-то из этого, я думаю ..

 

Edit2: ближе, я думаю; так как это на 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

... Я попытался найти некоторые исправления в системе:

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

... и поэтому я попытался просмотреть один из них:

kompare -o /etc/YaST2/policy.patch

... и этот, по крайней мере, открывается и показывает некоторые различия в kompare , так что, по крайней мере, есть справочный файл сравнения для сравнения ...

2 ответа2

2

Пытаться

$ kompare -c file1.txt file2.txt

Причина, по которой команда piped не работает, заключается в том, что по историческим причинам diff не создает формат патчей, к которому привыкли большинство из нас, с контекстом и + и - . Вы должны использовать diff -u чтобы получить это:

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

Я думаю, я понял ...

Моя проблема заключается в том, что я хотел, чтобы diff файлы VHDL; в VHDL комментарий - это два знака минус; скажем, у меня был этот комментарий в файле file1.vhd:

...
-- my comment A
...

и я заменил это на это в file2.vhd

...
-- my comment B
...

Таким образом, теперь, если бы я запустил унифицированный diff для этих двух файлов, я бы получил что-то вроде:

--- 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
 -- ...
 -- ...
 --

 

Заметить, что? - из diff (что означает "эта строка удалена"), объединенный с -- (который был оригинальным контентом: комментарии в файле .vhd ) - для создания --- который с точки зрения diff является идентификатором файла ( см. первую строку в фрагменте выше)!

 

Таким образом, поскольку Kompare явно не "открывает" файлы, даже через графический интерфейс - даже если вы укажете два файла, Kompare сначала, очевидно, запускает их через diff, а затем пытается проанализировать этот diff - по-видимому, сначала ищет +++ и --- для идентификации участвующих файлов; что приводит к неправильной интерпретации "строки комментария VHDL". Чтобы показать это, мне просто нужно было вставить пробел в файл diff:

- -- my comment A

... и тогда это может загрузить в Компаре.

Что ж, это, очевидно, означает, что теперь мне нужно сделать отступ для всех моих файлов * .vhd, чтобы они были совместимы с diff->Kompare ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .