#文件存储 #版本控制 #单文件 #数据文件 #备份文件 #增量 #控制系统

weave

Weave 增量文件存储。受 SCCS 存储格式的启发,此包允许将多个版本的文件高效地存储在单个文件中。

5 个不稳定版本

0.3.1 2022年2月16日
0.3.0 2021年3月21日
0.2.2 2019年9月8日
0.2.0 2018年3月7日
0.1.0 2017年8月6日

#908文件系统

27 每月下载次数
用于 rsure

MIT 许可证

38KB
734

Weave 文件支持

测试

许多测试将 crates 的输出与 sccs 命令生成的输出进行比较。在许多 Linux 发行版中,可以在cssc包中找到兼容版本。


lib.rs:

Weave 增量,受 SCCS 启发。

SCCS 版本控制系统是较早的源代码管理系统之一(1973年)。尽管其中许多概念在 git 时代已经过时,但它所使用的底层“weave”增量格式实际上是一种表示只在不同部分的数据的多个版本的好方法。

此包实现了基于 weave 的“纯文本”存储,其中纯文本由由换行符分隔的 UTF-8 可打印字符的行组成。

格式类似于 SCCS,但去除了 SCCS 中的一些相对较差的设计决策,例如在文件顶部放置校验和,以及使用限制大小的字段,例如文件中的行数,或使用两位数的年份。然而,weave 文件的主体,即描述插入和删除的部分,是相同的,这使得我们可以通过与 sccs 的存储进行比较来测试此版本。

使用 NewWeave 编写 weave 文件,它像常规文件写入器一样工作。文件本身有一些少量的元数据,但主要是初始文件的正文内容。

使用 DeltaWriter 将增量添加到 weave 文件中。它也像常规文件一样写入,然后使用 DeltaWriter::close 方法提取基本版本并使用 diff 命令写入 weave 的新版本。在过程中,close 方法将创建多个临时文件。

编织数据使用 NamingConvention 存储的,这是一个管理相关文件集和临时文件的特质。 SimpleNaming 是它的基本表示,包括基本名称、备份文件和一些临时文件。文件中的数据可以被压缩。

依赖关系

~4–6MB
~111K SLoC