Florian Gilcher wrote: > On Nov 6, 2009, at 6:14 PM, Marnen Laibow-Koser wrote: > >>> do the version control for user uploaded files.( Also i guess, if i >>> use >>> svn it will reduce the storage space also ) >>> >> >> Subversion would be a very poor solution here. You will have better >> luck with a decentralized version control system such as Git (and the >> Grit library, perhaps). Acts_as_versioned may also be worth looking >> at. > > Can you please elaborate why a decentralized approach is required here? I didn't know about SVN's autoversioned WebDAV, so I was thinking that SVN would require both a repository and a working copy in different places, whereas Git's decentralized model can keep it all together. > It is a purely centralized model and SVN actually does a decent job at > versioning binary files. Actually, in that case, even CVS has a > sufficient > model, because I expect there is no interdependence between the files. > [1] Actually, I think it's a purely decentralized model, for the reasons above. > So how is GIT superior to SVN in that case? > Is it even possible for git to return a specific version of a file > without > having to check it out somewhere on the file system and then deliver it > to the client?[2] Possibly. I'm not sure how .git is organized. [...]. > For example, neither the revision scheme of GIT or Subversion fits to > "per-file-tracking". Both cannot (easily) answer the question about the > "natural" revision of the file. (independent of other files) It seems to me that they can. > Also, they are not build for heavy concurrent(!) writing. Aren't they? > > Use a file system for binary file storage (that's what they are there > for). > If you need a versioning scheme (which would probably be per file): > use file > system storage with a versioning scheme baked into the directory > structure. Isn't that sort of what versioned WebDAV does? > If you need metadata for the files: use a database-backed approach with > file system storage. Isn't that what Git and SVN both do? > If you choose the correct file system, backing up is as easy as git > would > make it and a lot of backup-solutions are already around. True. But this is not straight backup. > > CouchDB might also be an idea to use for that.[3] That's clever. > > Don't abuse source control systems just because they usually carry > "version" > in their names! Don't restrict the use of version-control systems because some people call them source control. :) Seriously, I doubt that either Git or SVN is really the right tool for the job here. But I'm not certain. > > Regards, > Florian > > P.S.: And don't reply with "git" if someone says "svn" without giving it > a long thought. Both are bad in that case. That was not what I did. > > [1] Not that I recommend it, though. But you could even argue that CVS > model > fits better. > [2] This is in no way a criticism, it just doesn't fit git's model. > [3] They don't provide versioning for that use-case out of the box, > but it is > really easy to implement. Best, -- Marnen Laibow-Koser http://www.marnen.org marnen / marnen.org -- Posted via http://www.ruby-forum.com/.