https://github.com/Snowtrack/SnowFS Skip to content Sign up * Why GitHub? Features - + Mobile - + Actions - + Codespaces - + Packages - + Security - + Code review - + Project management - + Integrations - + GitHub Sponsors - + Customer stories - + Security - * Team * Enterprise * Explore + Explore GitHub - Learn & contribute + Topics - + Collections - + Trending - + Learning Lab - + Open source guides - Connect with others + The ReadME Project - + Events - + Community forum - + GitHub Education - + GitHub Stars program - * Marketplace * Pricing Plans - + Compare plans - + Contact Sales - + Nonprofit - + Education - [ ] [search-key] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} Snowtrack / SnowFS * Watch 6 * Star 137 * Fork 3 [Looking for maintainers] SnowFS - a fast, scalable version control file storage for graphic files www.snowtrack.io/ MIT License 137 stars 3 forks Star Watch * Code * Issues 7 * Pull requests 0 * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Security * Insights main Switch branches/tags [ ] Branches Tags Nothing to show {{ refName }} default View all branches Nothing to show {{ refName }} default View all tags 1 branch 1 tag Go to file Code Clone HTTPS GitHub CLI [https://github.com/S] Use Git or checkout with SVN using the web URL. [gh repo clone Snowtr] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching Xcode If nothing happens, download Xcode and try again. Go back Launching Visual Studio If nothing happens, download the GitHub extension for Visual Studio and try again. Go back Latest commit @seb-mtl seb-mtl Fix actions (#26) ... 3535821 Feb 21, 2021 Fix actions (#26) Fix pipeline 3535821 Git stats * 49 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github Fix actions (#26) Feb 21, 2021 .vscode Initial commit Feb 8, 2021 benchmarks cleanup and squashed commit with various fixes (#21) Feb 18, 2021 bin Various fixes including snow add . ignores deleted files (#25) Feb 21, 2021 img Initial commit Feb 8, 2021 resources Initial commit Feb 8, 2021 src cleanup and squashed commit with various fixes (#21) Feb 18, 2021 test Various fixes including snow add . ignores deleted files (#25) Feb 21, 2021 .eslintignore Initial commit Feb 8, 2021 .eslintrc.json Initial commit Feb 8, 2021 .gitattributes Initial commit Feb 8, 2021 .gitignore Initial commit Feb 8, 2021 .npmrc add engine-strict Feb 9, 2021 .typedoc.js Initial commit Feb 8, 2021 CODE_OF_CONDUCT.md Initial commit Feb 8, 2021 CONTRIBUTING.md update discord invitation link and update mail address Feb 9, 2021 CONTRIBUTORS.md add contributors Feb 9, 2021 LICENSE rename license file so GitHub detects it Feb 9, 2021 PULL_REQUEST_TEMPLATE.md Initial commit Feb 8, 2021 README.md Add artifacts and readme fix (#23) Feb 18, 2021 main.ts Various fixes including snow add . ignores deleted files (#25) Feb 21, 2021 package-lock.json Fix license and add GitHub workflow Feb 15, 2021 package.json Various fixes including snow add . ignores deleted files (#25) Feb 21, 2021 tsconfig.json Initial commit Feb 8, 2021 View code README.md snowfs SnowFS - a fast, scalable version control file storage for graphic files release Coverage Status Build and Test Overview SnowFS is a lightweight multi-platform support library with a focus on binary file versioning. It is made for the graphics industry and was initially developed for Snowtrack. Disclaimer: This project is in alpha state and actively developed. Do not use this yet in a production environment or without backups. terminal Feature highlights * Supports Branches * Asynchronous File Hashing * Project open to file-content awareness (e.g: *.psd, *.blend, *.c4d, ..) * Super-fast-detection of modifications in large binaries * Support for instant snapshots** * Support for instant rollback** * Support for files bigger >4TB * Block-cloning and Copy-on-Write support for APFS and ReFS*** * Support for removing single versions and/or binaries * Primarily I/O bound through libuv * Feature XYZ made by you! ** If the underlying filesystem supports it (e.g. APFS, ReFS) Why not Git/Git-LFS, libgit2, or SVN? First and foremost, the implementations of Git - namely Git/Git-LFS and libgit2 are excellent implementations of version control systems. But due to their focus on the software development lifecycle they are not suitable to version binaries or graphic files. SnowFS addresses the technical challenges for graphic files by its core design. Git/Git-LFS: Advantages: * Support on all major platforms * Supported by hosting platforms like GitHub, GitLab, and BitBucket. * Fast diff-operation for text-files Disadvantages: * (Without Git-LFS): Heavy cost with zipping, packing, and delta-compression for larger files * If not properly tracked, binaries become accidentally part of "base" history * Removing older commits is cumbersome due to Gits commit hashing integrity * Complicated rewriting history procedure * Issues with binaries >4GB on Windows as reported here, here, and here * Slow in binary modification detection * Git uses a restrictive license libgit2 Advantages: * Faster zipping, packing, and delta-compression than the reference implementation Git * Supports custom backends Disadvantages: * No native support for Git-LFS without custom backends * Custom backends break compatibility with Git TypeScript / C++ backport SnowFS is currently written in TypeScript. It is a great language to write powerful and performant I/O bound prototypes. There is a basic and experimental C/C++ backport, but we are looking for maintainers to get things finally rolling. If you have comments, ideas or recommendations, please let us know. Examples Code You can find the best and up-to-date code examples in the test/ directory. Given below these are simply "Hello World!" examples to get you started. import * as fse from "fs-extra"; import { join } from "path"; import { Index } from "./src"; import { Repository } from "./src/repository"; export async function main() { let repo: Repository; let index: Index; const repoPath = "/path/to/a/non/existing/directory"; Repository.initExt(repoPath) .then((repoResult: Repository) => { return fse.copyFile("/path/to/texture.psd", join(repoPath, "texture.psd")); }) .then(() => { index.addFiles(["texture.psd"]); return index.writeFiles(); }) .then(() => { return repo.createCommit(index, "This is my first commit"); }); } main(); Command line interface The CLI of SnowFS offers some basic functionality and is subject to enhancements. release $ snow init foo $ cp /path/to/texture.psd foo/texture.psd $ cd foo $ snow add . $ snow commit -m "My first texture" $ snow log $ snow checkout -b MyNewBranch $ snow log Versioning Starting with version 1.0.0 SnowFS follows the semantic versioning scheme. The API change and backward compatibility rules are those indicated by SemVer. Licensing SnowFS is licensed under the MIT license, please review the LICENSE file. Excluded from the license are images, artworks, and logos. Please file a request by mail, if you have any questions. Community * Discord * Support * Email Other resources The tests and benchmarks also serve as API specification and usage examples. These resources are not handled by SnowFS maintainers and might be out of date. Please verify it before opening new issues. Build Instructions To build SnowFS use a version >=12.10.0 of node.js. To build with node run: $ git clone https://github.com/Snowtrack/snowfs.git $ cd snowfs.git $ npm install $ npm run ava After npm run ava you will find a coverage report in ./coverage/ index.html. Running benchmarks We have also implemented a comparison benchmark between SnowFS vs. git. The benchmarks can be executed (after building) with the following command: $ npm run benchmarks Supported Platforms Currently, Windows, macOS, and Linux are supported. SnowFS works on plain filesystems like FAT, NTFS, HFS+ and has extended support for APFS and ReFS*. How can I contribute? See the guidelines for contributing. About [Looking for maintainers] SnowFS - a fast, scalable version control file storage for graphic files www.snowtrack.io/ Topics version-control version-manager version-control-system binary-manager version-tracker Resources Readme License MIT License Releases 1 tags Languages * TypeScript 99.0% * Other 1.0% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.