“Michelle, can you come help me for a sec?”, asks Sam our token Australian software developer.
“Sure”, I say, and wander over to his desk, pondering what technical enlightenment I can possibly offer him.
“I can’t check in any of my files to source control”, he says.
I take a look, and sure enough there seems to be a problem. The source control server is refusing to acknowledge the existence of any source code for his project. Alarm bells start ringing. Fortunately, a quick sanity check reveals it’s likely to be a user-specific security issue, rather than something more sinister with the server itself. I start going through the motions of checking configuration options and group permissions.
“I have checked in code before without any problems”, Sam helpfully suggests.
“When did you last check in?”, I ask trying to think of anything of that could have corrupted the permissions in the last few hours.
“November”, replies Sam.
“You last checked in your changes in November?!”
“Yes!”, Sam says confidently.
“Um, you really should check-in more frequently, what if your computer dies?”, I gently suggest.
“Oh I have been backing everything up”, Sam reassures me, “I do a back-up every day onto H Drive”.
“OK…”, I say, not quite sure where to begin.
Sam, has a classic case of Visual-Source-Safe Syndrome. Users check-out a change and then leave it checked out until they are absolutely certain it’s fixed before checking back in. The reason for doing this is VSS only supports single check-outs, so if a developer regularly checks changes back in they run the risk of someone else snatching the files off them, and then having to do a daunting risky merge some three months later.
However, in any modern source control environment, where multi-user checkouts and check-in changesets are the norm, prolonged check-outs become a dangerous habit. Once Sam is finally ready to check his changes back in, he may find that Michael has made numerous changes to the same file without him even knowing, and now he has a difficult merge to sort out (which ironically was the very thing he would have been trying to avoid).
Of course the real tragedy of mega-check-ins, is developers lose the ability of being able to do incremental or pick-and-choose roll-backs and compares. And if they find themselves in the common scenario when suddenly they discover their application is crashing when a week earlier it still worked fine, they are at a loss.
Fortunately, we are in the process of slowly leaving VSS behind, but it will be a long and arduous journey. And along the way, no doubt we will be supplying some generous doses of anti-cyberotics to combat those lingering cases of VSSS persisting into a new age.