I worked with Visual Source Safe for many years but around 4 years ago started using Subversion and team foundation server for some projects before switching full time to team foundation server since joining Dot Net Solutions. At the moment though I’m working at a customer site and once again using Source Safe.
I am becoming a worse developer every day.
The first little step was when Visual Studio crashed during a refactor. A little investigation showed this now occurs every time a refactoring is done that affects multiple files. This damages the integrity of Source Safe database and caused me to lose several changes. So I stopped using the automatic refactoring tool.
Shortly after I needed to remove a file and here’s a conundrum. You can immediately delete the file on source safe or you can just delete it locally and remove the project reference. There’s no way to do an atomic transaction that both deletes the file and also updates the project reference to it. Not wanting to break the build I deleted locally … but I didn’t remember to clean the file out of source control after I checked in and left the source code in a worse state. This’ll cause a problem for someone if they need to add a file with the same name later. I’m guessing they’ll choose an alternate name instead of the best possible name.
I needed to update a stub class for a unit test I was working on but a colleague had it checked out exclusively. I avoided writing the test.
The network went down and we had to run offline for a while. After the network came back online we had conflicting changes but despite selecting to merge the changes there was no windows to let us do this manually. I find this frightening. Was there a conflict? Did only one set of changes get applied? Next time only one person gets to work offline.
There’s no notification when someone checks in. I don’t get to inspect what my team are doing.
Recovering an old version of a file and changing it seems to cause issues with it being checked in – Source Safe seems to be ignoring the check in. I’m overcome with an overwhelming desire to keep old code blocks by commenting them out rather than risking this again.
I’m going to overcome some of these issues by keeping paper notes of every check in (and ripping my hair out), and by allowing colleagues to check in files outside of complete sets so that I can work on them (and kick myself every time this causes a build failure).
In a week and a half I’ll be back in TFS and will start to restore my sanity.