Sparkleshare and dvcs-autosync are tools to automatically commit your changes to git and keep them in sync with other repositories. Unlike git-annex, they don't store the file content on the side, but directly in the git repository. Great for small files, less good for big files.
Here's how to use the git-annex assistant to do the same thing, but even better!
First, get git-annex version 4.20130329 or newer.
Let's suppose you're delveloping a video game, written in C. You have source code, and some large game assets. You want to ensure the source code is stored in git -- that's what git's for! And you want to store the game assets in the git annex -- to avod bloating your git repos with possibly enormous files, but still version control them.
All you need to do is configure git-annex to treat your C files as small files. And treat any file larger than, say, 100kb as a large file that is stored in the annex.
git config annex.largefiles "largerthan=100kb and not (include=*.c or include=*.h)"
Now if you run git annex add
, it will only add the large files to the
annex. You can git add
the small files directly to git.
Better, if you run git annex assistant
, it will automatically
add the large files to the annex, and store the small files in git.
It'll notice every time you modify a file, and immediately commit it,
too. And sync it out to other repositories you configure using git annex
webapp
.
It's also possible to disable the use of the annex entirely, and just have the assistant always put every file into git, no matter its size:
git config annex.largefiles "exclude=*"