SnowFS是一个轻量级的多平台支持库,主要关注二进制文件版本控制。它是为图形行业而设计的,最初是为Snowtrack开发的。
免责声明:该项目处于alpha状态,并且正在积极开发中。请勿在生产环境中或没有备份的情况下使用此功能。
首先,Git的实现-即Git / Git-LFS和libgit2是版本控制系统的出色实现,但是由于它们专注于软件开发生命周期,因此它们不适合版本二进制文件或图形文件。 SnowFS通过其核心设计解决了图形文件的技术挑战。
SnowFS当前是用TypeScript编写的。编写功能强大且性能受I / O约束的原型是一种很棒的语言。有一个基本的和实验性的C / C ++反向端口,但是我们正在寻找维护人员以使事情最终进展。如果您有任何意见,想法或建议,请告诉我们。
您可以在test /目录中找到最佳的和最新的代码示例。在下面给出的只是“ Hello World!”!实例来帮助您入门。
从" fs-extra"导入*作为fse ;从" path"导入{join} ;从" ./ src"导入{索引} ;从" ./ src / repository"导入{Repository} ;导出异步函数main(){let repo:仓库; let index:索引; const repoPath =" / path / to / a / non / existing / directory" ;仓库。 initExt(repoPath)。然后((repoResult:Repository)=> {return fse。copyFile(" /path/to/texture.psd",join(repoPath," texture.psd")));} )。然后(()=> {index。addFiles([" texture.psd"]));返回index。writeFiles();})。然后(()=> {return repo。createCommit(index," This is my first commit");}); } 主要的 ( ) ;
$ snow init foo $ cp /path/to/texture.psd foo / texture.psd $ cd foo $ snow add。$ snow commit -m"我的第一个纹理" $ snow log $ snow checkout -b MyNewBranch $雪日志
从版本1.0.0开始,SnowFS遵循语义版本控制方案。 API更改和向后兼容规则由SemVer指示。 SnowFS是根据MIT许可获得许可的,请查看LICENSE文件。图像,插图和徽标不包括在许可中。 如有任何疑问,请通过邮件提出要求。 这些资源未由SnowFS维护人员处理,可能已过期。 打开新问题之前,请先进行验证。 我们还实现了SnowFS与git的比较基准,可以使用以下命令(构建后)执行基准: 当前,支持Windows,macOS和Linux。 SnowFS可在FAT,NTFS,HFS +等普通文件系统上运行,并已扩展了对APFS和ReFS *的支持。