We are looking at adopting Subversion for a large existing (internal) commercial project. Currently the source is only rudimentarily controlled with some home rolled scripts. All my previous experience has been with proprietary VCSs.
At the moment, a programmer checks out whatever files they need for a bug fix or enhancement request and the files are inserted into a folder under their home directory in an empty skeletion that matches the actual system (i.e. is unpopulated). This home directory is in their path directly before the main system directory. In this way when testing, the individual programmer will run their newly modified program in preference to the existing code with the other 99% of the system remaining in the common area which is accessed by everyone.
The system has been previously rolled out and currently lives in four different environments (devel, test, training and live). It is now under maintenance and bug fixing mode and is looked after by a team of six.
We are looking at bringing the devel workspace under Subversion control. It currently has some 50,000+ source code files in a pretty flat tree that looks like this:
product
GL
gl001.p
gl002.p
gl003.p
AR
ar001.p
ar002.p
ar003.p
ar004.p
AP
etc etc
Some of the folders do go deeper but most of them are a single level.
Questions:
- Is subversion a suitable means of controlling a project of this size?
- What's the story with checkout? Does subversion allow a single (or a few) programs to be checked out? For example, if I only wanted to modify gl001.p in the above example, could I just check it out alone?
- Does anyone have any suggestions as to a better tool for the job?
I'd appreciate any input at all on this subject - we don't want to commit ouselves to the job and then find out it all goes pear shaped.
Thanks and Regards
Nigel.