I am seeking previous experience and best practices in setting up a large development firm to use Subversion as a source control repository.
By large here, I mean hundreds of developers/users!
I am seeking previous experience and best practices in setting up a large development firm to use Subversion as a source control repository.
By large here, I mean hundreds of developers/users!
I have seen hundreds of developers use CVS for hundreds of projects, so svn should do it fine. The only issue I have been aware of was about disk space used for working directories and their backups.
I have worked on team which implemented in-house Subversion hosting across 3 geographical locations and hundreds of developers and 100+ projects. Some key learnings
Use Apache mod_svn rather than svnserve. You can then link the 'subversion authentication' to LDAP (or ActiveDirectory authentication) to that teams don't have to remember one more loginname and password.
Create multiple repositories on the same server rather than one big repository with different subfolders for each project. This way managing users and access control is simplified. Also task of closing and archiving the repositories on finishing project is simplified.
We developed simple python cgi-scripts to manage users, permissions and svn-hook scripts for email notifications and RSS feeds. The scripts helped in faster acceptance of svn by project teams.
You can put a reverse proxy and selectively expose the few projects over 'https' access from outside the corporate network. This way external supplier/contractor teams can get controlled access the projects.
Overall, we moved all project teams in about one year to new systems (including migrating data from existing systems like CVS and Visual SourceSafe).
I totally agree to Nitin Bhide. My additions:
if you used to CVS some workflows in SVN are very different, for example vendor branches, which are non-existent in CVS, because you just deleted all files in the vendor folder and copy the new version inside. This will not work in SVN anymore.
Also if you are used to eclipse, a lot of things in subversive as in subclipse are different. You should train the users to get used to global revision numbers as the most difficult to grasp point for CVS users
Also important is a migration strategy to avoid stall time for developerteams if their repository migration was not successful