As weird as this sounds, it happens and
I’ve seen it more than once, most recently just last week.
What’s happening here is that the source control repository
is being placed on a pedestal. For various reasons, the team is
viewing it as this sanitised, pristine environment of perfect code.
In order to maintain this holy state, code is only committed by a
lead developer who carefully aggregates, reviews and (assumedly)
tweaks and improves the code before it’s committed.
It’s pretty easy to observe this pattern
from a distance. Very infrequent commits (perhaps weekly), only a
single author out of a team with multiple developers and
inevitably, conflict chaos if anyone else has gone near the project
during that lengthy no-commit period. Very, very nasty stuff.
There are two major things wrong here: Firstly,
source control in not meant to be this virginal, unmolested stash
of pristine code; at least not throughout development cycles.
It’s meant to be a place where the team integrates
frequently, rolls back when things go wrong and generally comes
together around a single common base. It doesn’t have to be
perfect throughout this process, it only has to (try to) achieve
that state at release points in the application lifecycle.
The other problem – and this is the one
that really blow me away – is that from the developer’s
perspective, this model means you have no source control! It means
no integration with code from peers, no rollback, no blame log, no
nothing! You’re just sitting there in your little silo
writing code and waiting to hand it off to the boss at some
arbitrary point in the future.
Don’t do this. Ever.