The git-annex package
git-annex allows managing files with git, without checking the file contents into git. While that may seem paradoxical, it is useful when dealing with files larger than git can currently easily handle, whether due to limitations in memory, time, or disk space.
It can store large files in many places, from local hard drives, to a large number of cloud storage services, including S3, WebDAV, and rsync, with a dozen cloud storage providers usable via plugins. Files can be stored encrypted with gpg, so that the cloud storage provider cannot see your data. git-annex keeps track of where each file is stored, so it knows how many copies are available, and has many facilities to ensure your data is preserved.
git-annex can also be used to keep a folder in sync between computers, noticing when files are changed, and automatically committing them to git and transferring them to other computers. The git-annex webapp makes it easy to set up and use git-annex this way.
[Skip to Readme]
Enable S3 support
Enable WebDAV support
Enable git-annex assistant and watch command
Enable git-annex webapp
Enable production build (slower build; faster binary)
Cross building for Android
Building to get TH splices for Android
Embed the test suite into git-annex
Use haskell torrent library to parse torrent files
Use libmagic to determine file MIME types
Use concurrent-output library
Enable use of EKG to monitor git-annex as it runs (at http://localhost:4242/)
Get Network.URI from the network-uri package
Use the cryptonite library, instead of the older cryptohash
Enable dbus support
Enable notifications using XMPP
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
For package maintainers and hackage trustees