问题描述
我正在寻找允许差异文件保存和合并的任何信息或算法。
更清楚地说,我想在修改文件内容时原始文件应保持不变,并且每次修改都必须保存在单独的文件中(与差异备份相同,但对于文件),以防出现以下情况:访问文件时,它应该使用原始文件和最后一个差异文件来重建文件的最新版本。
下图描述了我需要做的事情:
解决方法
要计算差异,您可以使用diff_match_patch之类的东西。
您可以存储每个文件系列的DeltaDiff。
DeltaDiff将是以下两种类型之一的元组:INSERT或DELETE。
然后,您可以按以下方式存储DeltaDiff系列:
Diff = [DeltaDiff_1,DeltaDiff_2,... DeltaDiff_n ] = [
(INSERT,byteoffset regarding to initial file,bytes)
(DELETE,length)
....
(....)
]
将DeltaDiffs应用于初始文件将为您提供下一个文件版本,依此类推,例如:
FileVersion1 + Diff1-> FileVersion2 + Diff2-> FileVersion3 + ....