当我使用meld
获取视觉差异时,我仅可以从命令行运行它:
$ meld file1.txt file2.txt
...并meld
启动,在单独的子窗口中加载每个文件,并并排显示差异。
我正在尝试对 Kompare 做同样的事情:
$ 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 -
... 这不会引发错误 - 但它显示源/目标文件夹为“ unknown
”(否则,其他所有内容均为空白)?!
我是否可以按照自己的意愿使用 Kompare?如果可以,命令行应该如何格式化?
非常感谢您的任何回答,
干杯!
编辑:有大量与此相关的错误,结果是:
- 处理:使用排除文件选项时“无法解析差异输出”
- 错误 116637 - 当缺少时间戳时“无法解析差异输出”(时间戳是可选的)
- [Bug 252359] 新问题:Kompare 无法解析普通补丁文件
- 错误列表:kompare + could+not+parse+diff
... 我猜可能是其中任何一个。
编辑2:我想越来越接近了;因为这是在 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
,所以至少有一个参考差异文件可以进行比较......
答案1
尝试
$ kompare -c file1.txt file2.txt
管道命令不起作用的原因是,由于历史原因,diff
它不会生成我们大多数人习惯的带有上下文和+
和的补丁格式-
。您必须使用diff -u
才能获得此信息:
$ diff -u file1.txt file2.txt | kompare -o -
答案2
我想我明白了......
我的问题是我想区分 VHDL 文件;在 VHDL 中,注释是两个减号;所以说我在文件中有这样的注释file1.vhd
:
...
-- my comment A
...
我把它替换成了file2.vhd
...
-- my comment B
...
因此,现在如果我对这两个文件运行统一差异,我会得到类似的结果:
--- 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 不会直接“打开”文件,即使通过 GUI 也是如此 - 即使您指定了两个文件,Kompare 也会首先通过 diff 运行它们,然后尝试解析该 diff - 显然,首先通过查找+++
和---
识别参与文件;这会导致“VHDL 注释行”被错误解释。为了说明这一点,我只需在 diff 文件中插入一个空格:
- -- my comment A
...然后它可以在 Kompare 中加载。
好吧,这显然意味着我现在必须缩进全部我的 *.vhd 文件,使它们与diff->Kompare
管道兼容......