Comment by theli0nheart
6 months ago
I wrote git-bigstore [0] almost 10 (!) years ago to solve this problem—even before Git LFS—and as far as I know, bigstore still works perfectly.
You specify the files you want to store in your storage backend via .gitattributes, and use two separate commands to sync files. I have not touched this code in years but the general implementation should still work.
GitHub launched LFS not too long after I wrote this, so I kind of gave up on the idea thinking that no one would want to use it in lieu of GitHub's solution, but based on the comments I think there's a place for it.
It needs some love but the idea is solid. I wrote a little description on the wiki about the low-level implementation if you want to check it out. [1]
Also, all of the metadata is stored using git notes, so is completely portable and is frontend agnostic—doesn't lock you into anything (except, of course, the storage backend you use).
You should... definitely not stop working on this. git-lfs is not good, and git-annex is far more awkward than it needs to be.
Earliest tagged git bigstore: Apr 26, 2016
Earliest tagged git lfs: Jun 25, 2014
The first bigstore release on PyPi (0.1) was on March 27, 2013.
Check this out: https://pypi.org/project/git-bigstore/#history