Support git annex
Created by: fire
User Story
As an artist, I ruined my feline 3d model texture. I want to go back to the version of my texture 25 days ago. Git is hard and I depend on an auto-commit to git tool from the company. I need to easily grab my old version from a website without my brain hurting.
As a developer, I need to test my game installer released 45 days ago. I want to browse the releases folder and select the executable from a website. Then I download the executable.
As a developer, I want to add another Amazon S3 remote remotely. I need to set my public key and the S3 api key.
As a developer, I want an archive of the entire repo. I buy a 3 terabyte hard drive and send it to my server host. They load the entire repository onto the hard drive and mail it back to me.
As a game developer on a project, I want to store 50 revisions of a 50 mb texture file or 500 5mb assets. With normal git it needs to be sha1 hashed (from the slow disk) and diff compressed. That's 2500mb.
As a game developer, I want to store a copy of every dvd release, every public release of the game software. 2 dvds is near 9GB.
What is Git Annex?
git-annex allows managing files with git, without checking the file contents into git. annex
stores the raw files in a more scalable backend. For example: Amazon S3 or the file system if the server is local.
git annex
can require 3 copies of the file to exist in distributed repos or fsck your current local repo against the other repos.
At the same time you can use regular git.
Design Browsing Interface
Show tree and file contents.
Package a set of repository files into an archive file. The trivial case is one file.
- Gather all the files from all repos
- Compress
- Distribute
Design Admininstration Interface
Link public keys.
Add remotes. Add a github remote where you push certain sections of your repository.
Define number of backups for the entire repository and particular folders.
Run fsck.
Steps
- Install a package of
git annex
. git annex init
- Manage users. (This is blocked on #15 (closed) Upgrade to Gitolite)
- Create browsing interface.
- Create administrative interface.
- Create a How do I use
git annex
? guide.
Bonus
Actually create the auto-commit git client. Look into SparkleShare for a dropbox clone and ShareBox FS for FUSE client.