Welcome to my first article here on Dev.to. In this article, I will be sharing an overview of an open-source project I kicked off to explore ideas and solutions on how to bring version control to graphic projects.
The open-source project is called SnowFS and it is a lightweight command-line application and library for binary files with a focus on graphic files.
I recently started developing an UI application that brings local version control and artists/designers together. Given the effort of the Git community to support larger files, I tried Git+LFS for my first prototype. It seemed, after several successful tests I've overcome the inner demons that were screaming Don't even try to use Git with such big files. Means Git with LFS is a nice solution to tackle such needs.
Unfortunately, the devil is in the detail, and some features beneficial for the software development process can be quite counterintuitive for other project types. For example, the hash integrity of Git is great to ensure the integrity of a software repository, but not really needed for a graphic project. For such project types, the requirement to delete individual files or removing entire commits without rewriting the history all the time is more important.
Basically, I needed Git, just more lightweight, support for big files, and a fraction of the functionality. And that's how SnowFS was born. It supports...
- ...deleting of entire commits or individual files
- ...instant snapshots
- ...instant rollback
- ...super-fast-detection of large modified files
- ...block-cloning and copy-on-write supports for APFS, ReFS, and Btrfs
- ...and more.
Below is a comparison between Git and SnowFS on a Macbook Pro (2020) with an APFS formatted SSD to check-in, delete and restore a 4GB Photoshop File.
$ git lfs track *.psd $ git add texture.psd # 20164ms $ snow add texture.psd # 4596ms <-- Not bad $ git rm texture.psd # 575ms $ snow rm texture.psd # 111ms <-- Also ok $ git checkout HEAD~1 # 9739ms $ snow checkout HEAD~1 # 1ms <-- Yeah!
SnowFS is a great lightweight and flexible project to explore and experiment with new ideas for version control. If you are interested in the project, we are looking for your expertise to share and learn!
In that sense, Happy versioning!