我想知道BSpatch是否可用于应用VCdiff

时间:2015-07-13 07:11:41

标签: embedded compression embedded-linux patch vcdiff

我需要使用delta比较两个二进制文件来生成VCdiff。 我可以使用BSpatch将生成的补丁文件应用于节点吗?我知道BSpatch用于应用BSdiff生成的补丁文件,但有没有规定可以使用BSpatch来应用VCdiff生成的补丁文件

1 个答案:

答案 0 :(得分:0)

不,这是不可能的。以及bspatch不会执行由rtpatch或zdelta解决方案创建的delta文件的插入。所有这些机制都使用不同的算法。此外,BSDIFF4解决方案还在创建的补丁文件中添加字符串“BSDIFF40”。

但你仍然可以尝试检查:

$ echo 1 > first 
$ echo 2 > second
$ bsdiff first second bs_delta
$ vcdiff encode -dictionary first < second > vc_delta
$ xxd vc_delta > vc_delta_hex
$ xxd bs_delta > bs_delta_hex
$ diff vc_delta_hex bs_delta_hex 

结果是:

1,2c1,8

< 0000000: d6c3 c400 0001 0200 0802 0002 0100 320a  ..............2.
< 0000010: 03                                     .
---
> 0000000: 4253 4449 4646 3430 2a00 0000 0000 0000  BSDIFF40*.......
> 0000010: 0e00 0000 0000 0000 0200 0000 0000 0000  ................
> 0000020: 425a 6839 3141 5926 5359 009d 217b 0000  BZh91AY&SY..!{..
> 0000030: 0140 007c 0020 0021 9a01 9a02 5ad2 347c  .@.|. .!....Z.4|
> 0000040: 5dc9 14e1 4240 0274 85ec 425a 6839 1772  ]...B@.t..BZh9.r
> 0000050: 4538 5090 0000 0000 425a 6839 3141 5926  E8P.....BZh91AY&
> 0000060: 5359 40c2 7e6e 0000 00c8 0000 1010 0020  SY@.~n......... 
> 0000070: 0021 0082 b177 2453 8509 040c 27e6 e0    .!...w$S....'..

如您所见,文件完全不同,即使创建增量的输入文件相同。