TL; DR
git-jam
is a Git LFS precursor, and git-fat
NodeJS rewrite and enhancement, allowing to manage large and binary files out of git.
I made it entirely from scratch, with git-fat
as an obvious inspiration, but adding various enhancements to fit my needs. It is entirely open source.
About the project
git-jam
is a large file manager for git, inspired by git-fat
, before Git LFS was made public. Its goal was to replace git-fat
and provide an easier interface with more back-end options.
It stores the actual content of large files in separate files, outside of the git repository, with only references to their content actually commited, making repositories very light, even on Video Game projects and other binary file-heavy projects. It blends in normal Git workflow (git add
, git commit
, etc) using git hooks, much like the more recent Git LFS works.
My work on the project
This was a solo project, initiated while I was working at XIWEN games on Gourmet Quest. To avoid having unmanageable Git repositories, we used git-fat, a precursor to Git LFS, to handle our binary files (images, sounds, etc.).
Git-fat was great, but also, hard to set-up and with limited back-end options. I decided, as a side project, to re-code the whole thing in NodeJS , the modern scripting back-end at the time (I did not like Python very much, so I decided against contributed to git-fat
), and enhance it with QoL features such as a CLI setup process, S3 back-end integration, etc.
We then switched to it in the company, and I still use it today for cheaper LFS solutions on AI Confidential, for example, by storing binary files on S3 instead of buying Github/Gitlab LFS space.
This project being open-source, you can check-out the code if you like!
There are a few things to do on it, which I do not have time to do, like updating the Amazon Web Services SDK and adding new back-ends. Don’t hesitate to send a pull request if you feel like it!