1

我正在尝试为diff文件夹中的多个文件递归开发一种文件格式。考虑一个包含修补文件的源目录和一个包含原始文件的目标目录。编写一个大小最小的diff文件,表示源目录和目标目录中所有文件之间的差异,可应用于原始文件,以便将原始文件转换为修补文件。

为此,我找到了dtl图书馆。我应该使用库的哪个算法或功能将文件写入diff磁盘,然后我可以稍后读取并应用以修补文件?有任何示例代码吗?我尝试将shortest edit script( SES) 的结果写入磁盘,但我意识到我需要为每个字节指定字符和操作。这当然会使输出文件大于整个比较文件,使这种差异格式完全多余,因为存储整个目标文件会节省更多存储空间。

git作为另一个参考,这与版本控制系统的喜欢或操作方式非常相似,svn但我不想使用它们,因为我主要处理二进制文件以及创建和应用补丁的简单要求。

4

2 回答 2

1

在进行了更多搜索后,我找到了该HDiffPatch项目。它显然工作得很好,但在更大的文件夹比较上似乎需要很长时间:

diff usage: hdiffz [options] oldPath newPath outDiffFile
patch usage: hpatchz [options] oldPath diffFile outNewPath

编辑:
另一个不错的选择是open-vcdiff,但它只支持单个文件。

于 2020-03-13T15:42:01.927 回答
0

使用 HDiffPatch:您可以使用“-s-48”运行 hdiffz 以提高速度;或尝试“-s-32”、“-s-1k”、“-s-128k”...

于 2020-06-24T14:08:16.380 回答