I’ve recently given
git-annex a try. It is based around the initially mind
boggling concept of tracking files in git without checking them into git. In
reality it’s not so strange. Git is great at tracking text files, and smaller
binary files. But for many large files, it becomes inefficient, both because of
its storage format and because it ends up storing two copies of each file. What
git-annex does is keep track of various metadata in a separate branch, and just
place symlinks to the real data in the main directory.
This opens up a bunch of possibilities. Ie. given that the files are outside of
git, you can check out the entire tree without having the files there, and then
you can tell
git-annex to get the files. I already use git for most of my
files, but for images, larger documents, music etc. it’s not really feasable.
git-annex though, it’s no longer a problem. I simply check the files
that make sense into git, and the rest into
git-annex (and having both kinds
of checkins in a single repository is no problem). I now use
track my music collection, mail attachments (syncing from my server to
desktops) and images.