- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
流行的版本控制系统(svn、git)如何处理存储对二进制文档的修订?我的项目包含定期更新并需要 checkin 的二进制源(主要是 Photoshop 文档、自定义数据格式和一些文字处理文档)。我一直担心 checkin 二进制文件,因为我认为 VCS 可能会采取一种简单的方式,每次只上传一份新的二进制文件副本 - 因此我的存储库会很快变得庞大。
如果我有几个数据 block (我们称它们为 A、B、C、D 等)并且我有一个二进制文件,在第一次 checkin 时看起来像 ABC,但在第二次 checkin 时已被修改为 ADBE ,我的 VCS 是否足够智能以仅存储更改的位,还是会创建文件的全新图像?
最佳答案
Git 只能存储二进制文件的差异,但效率不高,因此您可能应该使用一些外部工具,如 lfs
.
默认情况下,git 不存储提交之间的差异。当您更改某个文件并进行新提交时,git 会存储包含整个文件内容的对象。只更改一行或重写整个文件都没关系 - git 不存储差异,至少一开始是这样。有一个名为 git-gc
的 git (垃圾收集器)负责删除悬空提交和优化等任务,它运行另一个 git 命令 - git-repack
这正是你所要求的。它获取所有对象并使用增量压缩将它们存储在一个包中。
不幸的是,在压缩二进制文件时,使用 git-repack
打包并不是特别有效。你可以随时 tweak it , 但如果你的文件变化很大,或者它们真的很大,你应该使用一些外部工具,比如 lfs
.
关于git - 版本控制系统是否使用差异来存储二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39522863/
场景:WAMP 服务器、InnoDB 表、自动递增唯一 ID 字段 [INT(10)]、100 多个并发 SQL 请求。如果需要,也应使用 VB.Net。 我的数据库有一个自动递增字段,用于为每个存储
我是一名优秀的程序员,十分优秀!