We're currently using StarTeam for our project, and the license is expiring soon. We're looking at moving to Team Foundation Server or something similar, but there's a push (mostly from myself and one other person) to move to some form of distributed version control. One of the problems is that our change manager wants to be able to track and release by change request (as in StarTeam), and I don't believe this can be easily done with Mercurial or Git out-of-the-box (please correct me if I'm wrong).
This is a 15+ year-old product with thousands of java files and PL/SQL packages, maintained by 5-6 development subteams with a total of 30-40 developers. To me, that seems like it would make a distributed repository a nightmare with the "commit early, commit often" mindset. The fact that each team would be working on a completely different subsystem in the same repository makes it even nastier in my mind.
Our current StarTeam process for any change is as such:
- Lock the file(s) you want to work on,
- Make your entire change and get it reviewed from a copy on a network drive,
- Check in (and unlock) the changed files, hoping that someone hasn't forcibly broken your lock,
- Hope that your change hasn't broken the build from someone else's change to other files
Personally, I think the idea of "locking" files is ridiculous. There should be enough communication between teams such that you don't need to.
Does anyone here have experience with distributed repositories on projects of a similar size? Could you make any suggestions as to version control and/or change management solutions? The main requirement is that the system be able to manage customer-initiated change requests and force developers to link their checkins to one.
Thanks.