标签: binary-diff

git二进制差异算法(增量存储)是否标准化?

Git使用增量压缩来存储彼此相似的对象.

此算法是否已标准化并在其他工具中使用?是否有描述格式的文档?它与xdelta/VCDIFF/RFC 3284兼容吗?

compression git binary-diff vcdiff

50
推荐指数
3
解决办法
2万
查看次数

如何编译Google Courgette工具?

Courgette(说明,来源)是一种Google工具,用于有效地更新Chrome.

它似乎是一个伟大且易于使用的工具,但我无法编译它.我已经尝试过VS2010,GYP并直接使用C++编译器,但都失败了.

有没有人对如何编译Courgette有任何建议?

google-chrome compilation binary-diff chromium gyp

14
推荐指数
1
解决办法
1万
查看次数

用于Java的二进制差异库

关于SO的Java文本差异库有几个问题,但没有关于二元差异的问题.所以我走了:

我正在寻找一个用Java实现二进制差异库.我找到了javaxdeltaGNU Diff端口,但我想知道是否还有其他一些隐藏的宝石?也许有人有上述图书馆的经验?比较会非常有用.

最后,也许有必要知道我想要使用Avro序列化对象.

java diff binary-diff

10
推荐指数
1
解决办法
6221
查看次数

商业软件的二进制差分算法

我正在处理应用程序将更改的文件发送到其他计算机.目前,即使更改很小,也会完全发送已更改的文件.我正在寻找一个库(C,C++,Java),它允许我创建二进制diff并仅发送delta和匹配的补丁来合并数据.

我正在寻找Eclipse或Apache许可证下的理想选择.LGPL也会工作.

diff binary-diff librsync

9
推荐指数
1
解决办法
4130
查看次数

diff/patch for images

我正在编写一个项目,我需要通过网络传输一组类似的图像.为了加快速度,我想到了做大多数电影编解码器所做的事情.有关键帧,然后只发送更改.

现在,我得到的是一组BufferedImages所以与文本文件类似,我基本上只想区分它们并发送补丁.但是我以前从来没有真正使用过图像,所以如果我这样做的话,它会很糟糕.

那么,实现这样的事情的最佳方式是什么,或者这样的事情已经有了很好的实现?

我想将图像存储在一个字节数组和二进制diff中它们不会非常有效.

编辑:我需要传输这些图像.编辑2:与实现的具体细节不同之处在于:算法的最有效思想是什么.就像只使​​用5px块而不是忽略px如果它只是变化那么少,眼睛就不会注意到(我可以忍受一些质量损失)

java diff image binary-diff

8
推荐指数
1
解决办法
1283
查看次数

使用git进行数据版本控制:特定文件的自定义差异

所以,我想调查git对某些二进制或文本树数据结构的版本跟踪的适用性.问题是我希望diff逻辑完全是自定义的,为数据结构模式量身定制.

假设有问题的文件是某个json对象,我想为json文件自定义diff,所以如果我有这样的版本A:

{ a: 'yes' , b: { 'X': 'unavailable' , 'Y': ready } }
Run Code Online (Sandbox Code Playgroud)

我应用以下更改:

{ a: 'yes' , b: { 'X': 'unavailable' , 'Y': done } }
Run Code Online (Sandbox Code Playgroud)

所以我的差异很聪明,发现只有项目1改变了.使用默认差异,如果其他人在密钥a,item [0]中进行了更改,则会产生需要手动合并的冲突.自定义diff旨在为特定文件类型和内容自定义diff逻辑.

二进制文件略有不同可能也适用.

这个问题的目的是看看是否有:

  • 当前git中支持此自定义的方法
  • git开发的项目或分支,以支持此自定义
  • 一些其他工具更好地针对此

谢谢!

编辑我发现这篇文章,我认为这给我一个非常广泛的范围我想知道的事情.此外,这可能是一个迹象,表明目前还没有很好的解决方案.

git version-control binary-diff

8
推荐指数
1
解决办法
1466
查看次数

Git和二进制数据,最佳存储方式

我不幸的是不得不在 git 中存储一些二进制文件,

但是我可以选择如何将数据存储在磁盘上 - 在 Git 中(以我们自己的格式,只有构建系统需要读取)。

我想避免谈论太多细节,因为我认为它没有那么重要 - 但为了提供一些上下文,这些是许多图标文件,但同样的问题也适用于许多小声音文件或 3d 模型。

将这些文件转换为一个大图像将是一个构建步骤,因此图像可以在 git 中以我们喜欢的方式存储。

  • 二进制压缩(例如,PNG(图像)、FLAC(声音))
  • 二进制未压缩(例如,PPM(图像)、未压缩的 WAV(声音))
  • 二进制数据的 ASCII 表示(例如,mime 编码、XPM(图像))

让我们假设某些文件偶尔会发生变化 - 因此避免为像素的每个小变化存储一个新的二进制 blob - 会很好。

我有兴趣知道:

  • 每次二进制文件更改(甚至几个字节)时,哪些选项将存储一个全新的二进制 blob。
  • git diff 未压缩的二进制数据是否比压缩数据更好(即使对未压缩数据进行轻微编辑,也可能发生很大变化)。
  • 我认为与一个大型二进制文件相比,长期存储许多小型二进制文件的开销较小,假设只有一些文件被定期修改,git 可以有效地处理对大型二进制文件的小改动吗?

假设不能完全避免使用二进制文件,所有考虑到避免大型 git 存储库(因为对二进制文件进行编辑)的最佳选择是什么?

git binary-diff

5
推荐指数
1
解决办法
2205
查看次数

为什么bsdiff.exe在使用这个较小的文件时遇到问题?

我正在使用bsdiff.exe构建一个软件补丁并将其与bspatch.exe一起应用,到目前为止,对于小于120MB的文件没有任何问题.我有一个二进制文件以前是21MB,现在是77MB,而bsdiff似乎无限期挂起.

根据文档,"bsdiff非常需要内存.它需要max(17*n,9*n + m)+ O(1)字节的内存,其中n是旧文件的大小,m是大小新文件." 这解释了大文件的问题,但是当delta较大时似乎会出现问题.

有没有人有这方面的任何信息?任何事情都会有所帮助,谢谢!

patch binary-data binary-diff

1
推荐指数
1
解决办法
1697
查看次数