My first thought was CVS, as Brandon ?sugested? Anyway, I wasn't quite clear on how CVS dealt with binary files... so I did a little googling and found
this . It basically says what's already been stated.
Text is no problem, but for binary, you can't always have a diff. So storing all the binaries seems the best way to go. Now I'm not saying freelanceFIRST won't be big, but I don't think storage will be much of a problem. I mean, there wont be THAT many projects. And as it's popularity increases over the years, storage space will go down. See, it all works out great.
This quote from the manual basically states how I think update should be handled.
"Another ability of a version control system is the ability to merge two revisions. For CVS this happens in two contexts. The first is when users make changes in separate working directories (see section 10. Multiple developers). The second is when one merges explicitly with the `update -j' command (see section 5. Branching and merging)."
People make their changes, and the main file is updated when everyone agrees that it's great.