Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Subversion as a standard source control repository for a large development firm

Tags:

svn

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!

like image 647
essamSALAH Avatar asked Mar 24 '09 15:03

essamSALAH


People also ask

What is the purpose of an SVN Subversion repository?

Subversion is used for maintaining current and historical versions of projects. Subversion is an open source centralized version control system. It's licensed under Apache. It's also referred to as a software version and revisioning control system.

Do companies still use Subversion?

While SVN is no longer the most used VCS, it has managed to establish itself in a few very niche areas. Features like customizable access control to project files and a central server are some reasons why developers may still be using SVN.

Is Subversion better than Git?

SVN is better than Git for architecture performance, binary files, and usability. And it may be better for access control and auditability, based on your needs.


2 Answers

  • Pick the right directory structure from the start - it's a bitch to change later.
    • I tend to think that the "best" is organized by project, with a trunk/tags/branch under each project
  • Every person does not need every project checked out. Only check out what you need
  • Figure out some way to share tools among developers. Little things like a SQL diff program that grabs procs off servers and diffs them is invaluable.
  • Try not to let any one project be too large. Trying to update or commit across a folder with 1GB is annoyingly long to compute
  • Figure out some upgrade strategy for the subversion server
  • Backup your repository of course - with full revision history
  • Trac is useful for linking people directly to changelongs and diffs
  • Make it fun. Run keyword searches over the repo on the weekend and graph how often people say curse words in code. Run a code swarm
like image 82
Tom Ritter Avatar answered Oct 16 '22 07:10

Tom Ritter


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

  1. 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.

  2. 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.

  3. 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.

  4. 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).

like image 44
Nitin Bhide Avatar answered Oct 16 '22 08:10

Nitin Bhide