I'm in charge of a software platform, written in C, that is used to provide a variety of projects to clients. I am trying to improve the workflow for people using this platform, and looking at whether source code control (Mercurial being the most likely candidate) can help.
The platform is only used internally for ~10 projects / year. It's got a wide range of functionality, and lots of bits that are unused on most projects. As a result, there are plenty of bugs hidden away.
I'm wondering if anyone has similar experience, either managing or using a constantly updated platform in this way.
The current situation
Platform development is done with a mercurial repository, but the releases of the platform are not done through mercurial. For a release, the platform files are put into a tarball on a central server. For any system connected to the core, the start of the build process copies the updated tarball and unpacks it into the application source code. Application programmers can't edit the core files (various commands are aliased through shell scripts, and they get an error if they try).
What I'm after
It seems like it should be possible to somehow use Mercurial to manage this. We could easily maintain a release branch of the platform, and have projects clone the release branch as their starting points.
But I'm not sure where it would go after that. On a project, the functionality is completely up to the client. If the core files are unlocked, people will immediately start editing them, even when there is a better way (this is what happened before the lockdown). This is going to mean merging in new core changes becomes difficult, and I suspect will result in a lot of teams not bothering.
The draconian solution of locking the core files, and forcing automatic updates to all projects was really quite successful: we get more complaints and problems from the projects that are disconnected, than the ones receiving the forced updates. However, as soon as projects go into testing, they have to be disconnected. After that, short of manual merging, they get no more platform updates.