如何将 rdiff delta 文件转换为常规 diff?

如何将 rdiff delta 文件转换为常规 diff?

我需要区分两个非常大文件,太大了,无法diff处理。rdiff可以在几秒钟内为它们生成一个增量文件,但我希望有一个真正的差异作为输出。有没有现成的方法将rdiff增量转换为常规差异?

答案1

我认为这不可能(轻易)实现。rdiff将文件解析为字节块,为固定大小的字节块生成签名。然后将新文件与这些签名进行比较。增量文件包含所有不同的块,这些块不一定与原始文件或比较文件中的行匹配。

例如原文:

AAAAAAAAAA
BBBBBBBBBB
CCCCCCCCCC
DDDDDDDDDD

和....相比:

AAAAAAAAAA
BBBBOOOBBB
CCCCCCCCCC
DDDDDDDDDD

可能会产生一个增量:

[..]BOOOBBB
CCCCCCCCCCC
DDDDDDD[..]

常规diff文件通常包含所有更改的行。rdiff增量文件可能只包含部分更改的行,也可能包含大量未更改的行。您必须再次解析文件才能确定实际更改的行。

有关详细信息,请参阅rdiff文档或http://librsync.sourcefrog.n​​et/doc/rdiff.html

相关内容