Problem:
A huge code base spanning to several million SLoC, maintained(support/active enhancements etc) by a horde of second/third rate programmers(most of them who do not really care). Decades ago, few smart guys had put in place a wrapper that uses CVS underneath and this system is being used by current generation of developers (90% of them have not used CVS directly, or heard of/used another command line source control system).
Effect:
Usage of CVS and multiple teams working across multiple modules, inevitably => CVS branch merges to trunk. This would be an activity practised in the most religiously and ritualistically possible way. [=> brute force; planned weeks ahead, involving a dozen guys for 2/4 days. Hundreds(sometimes thousands) of sources handled, manually. Funny part is, the people involved are not the original owners of the fix, and they simply go by checking the diffs; really, am not kidding!] This leads to a lot of inconsistency in the sanity of the libraries/modules/functionality and too much of effort is spent to correct defects due to regression during these merges.
And now, the question:
What alternative source control system can bring in some positive change and improve the lives of programmers/managers and everyone else in the environment?
Since everyone around there seems to have drunk the KoolAid (and sing "This-is-how-things-are-done-everywhere") without even giving a thought about finding an alternative, it is high time someone does that. But considering the sort of people who would use the system, the following aspects are to be kept in mind.
- Simple to use && understand, even Joe Coder should be able to use it without fuss. (Anyway this won't be needed, as the wrapper would hide real under-the-hood stuff from folks)
- A HUGE codebase (consisting of sources across multiple languages), with multiple(around 30) active branches at any given time.
- Easy merges to various branches. (considering that volume of changes is quite huge)
- Commercial support for the system would be sweet, if available.
- Development happens on UNIX servers (Should run on HP-UX/Solaris at least)
- Should scale well (thousands of users/hundreds of thousands of sources)
- Good Documentation
- Simple/lucid browser based interface to compare/view changes/copies.
- There are no binary files in repository, so need not bother about them.
- Provision for importing current repository contents into the new system.
So, please suggest. Is there hope && a way out? :) Am pretty sure stuff like git would be rejected outright (they believe "git is only for smart folks")
EDIT: I too have Mercurial and BitKeeper in mind, and have mentioned it to folks up the chain. Hoping for the best! Thanks! :)