A year or more after we asked/ordered the responsible department here to set up version control for our project I've been given (unofficially so far) authority to go ahead and put together a system we can use. At the moment the project contains some 1200 source files, so go figure...
Most likely option for me is CVS as I've used it some in the past and it's free (we're on a low budget). Our servers run Unix (variety of versions matching our customers' platforms) so it must be able to run on Unix at least as the server.
The project consists of a main line of code with customer-specific adaptations to make things interesting. Furthermore there must be a means to tag releases to specific releases of our backend code as the two are interdependent to a large degree. That backend code exists in its own version control system which is inappropriate (it's a homegrown solution that doesn't integrate with anything except our homegrown source editor for our homegrown programming language in which the backend code is written).
I'm thinking of a main module (maybe more than one and divide up the project in smaller subprojects which I've been planning for some time now) and smaller modules for the customer specific code. Releases would branch off of either of those.
Am I on the right track or is there a better solution?
I think your organization makes sense; you have a lot of flexibility.
Since this is a "green field" application of version control, I'd seriously consider Subversion, which is basically a "new improved CVS." I'm using it on new projects and it's lovely: the most important feature, from my perspective, is that you can explicitly move and rename files without losing their history the way you do in CVS.
I did consider subversion until I heard some horrorstories of irretrievably lost repositories. I'm also not that comfortable with using pre-beta software in a core function of a multimillion Euro project (plus I have documentation for CVS so I'm just more comfortable with it).
But I will look into it again as indeed the absense rename functionality in CVS is a shortcoming.