Reputation: 10529
maybe my question is not paraphrased properly, so let me try to explain it.
I'm trying to investigate open source alternatives to ClearCase. One of the strengths of it is that it allows the logical partitoning of content into separate centralized version object bases (or vobs), which we can control access to. That is, the repository provides a unified view from an administrative point of view, and then we can assign access control rules that limit who can see/modify what in the repo.
Unfortunately, it's expensive... and many of its features suck. Overly complicated config spec language, the need to create a label type before applying a label, etc, etc. So, I'm looking for alternatives.
Has anyone reading this had any experience configuring and using an open source distributed version control system in such a manner? In particular with respect to applying access control rules on subsets of content in a repository (sized in terabytes)?
Same questions with respect to centralized open source alternatives.
Any first-hand experiences and from-the-trenches anecdotes will be greatly appreciated.
Upvotes: 0
Views: 535
Reputation: 20878
DVCS generally require that each developer have a complete copy of the repository so they can be poorly suited for such a large data set.
You might be able to make it work if most of the data is rarely updated. You would pay a steep penalty for initial checkouts, but smaller commits and updates might be reasonable. This is one area where centralized VCS with partial checkouts can be superior to distributed systems.
If there are logical divisions to the content, you could divide in to separate smaller repositories. Git & Mercurial allow you to create sub repositories, which make can make it easier.
Unless you need to block read access to some content, I think that the access controls are a non issue. Unlike a centralized system, you don't have to have one central repository for moving changes between developers. There are numerous workflows. You could have one senior developer who maintains a stable branch, and have them pull in updates from developers. You can have multiple public branches, in separate locations, and use standard network access controls who can push to each branch. The possibilities are endless.
Upvotes: 1