SourceSafe for non-Software Developers

Before I came to Microsoft, I worked in the inspection department (a double wide trailer, actually:) of what was then a Texaco oil refinery. During my employment, I helped design and implement a corrosion monitoring program that aggregated and analyzed various data inputs (UT & X-ray measurements, acid levels, chemical concentrations, temperature, etc) to help pipe and vessel inspectors identify rapidly corroding pipes before they spewed caustic petroleum goo on defenseless pipefitters or engulfed my plastic inspection trailer in a 1200 degree fireball.  Few things motivate like fear of incineration.  Anyway, having educated myself in AutoCad a few years before (late-high school LISP binge), the inspection superintendent asked me to help the department assistant/draftsperson computerize and archive the umpteen million drawings of absolutely everything in the plant.  The refinery’s IT director suggested we use Visual SourceSafe to store our .dwg files.  Hoping to secure a desktop with more than 48megs of RAM, I did so without question.  Several AutoCad plug-ins have since been released that provide integrated versioning and source control for the AutoCad environment.  But back then, we just used VSS and AutoCad separately.

When I joined the SourceSafe team three years ago, I was surprised to learn that few of my new team members really knew how many NON-software developers use VSS and how diverse and critical are its uses. I assure you, they know now.

Source control is no longer the exclusive domain of hardcore software developers. However, source control applications like Visual SourceSafe were designed for and are particularly useful for software developers OR computer professionals whose files are primarily text-based (UTF-8, ANSI, etc)!

SourceSafe is designed to allow two or more individuals to work on the same file at the same time…as long as those files are non-binary. If multiple checkouts are enabled (which is not but perhaps should be the default setting*), when a user checks in their locally-persisted changes to a text file, SourceSafe automatically merges their edits into a single version of the file in the VSS database. If two users touched the same line of text in the same file, SourceSafe prompts them to decide which edit they want to keep.

SourceSafe doesn’t even try to merge differing versions of non-text encoded files.  For binary files, such as those produced by Microsoft Word, AutoCad, and seemingly every other non-text editor around, SourceSafe can only tell whether two versions of a file are identical or not identical.  Theoretically, it’s possible to merge differing versions of a single binary files. But from what I understand, binary merge algorithms are difficult to create and more importantly, must be created for every single binary format.

A reader recently asked, “I am just trying Source Safe on a computer graphics project. That means files that are by far larger than in a software development project, and a lot of them. What impact do I have to fear while the project grows? Does anyone has experience with large databases in Source Safe? I would appreciate your comment very much.“

My reply: “The maximum recommended database size is 3-4GB. That being said, my team, which authors documentation in Word, has maintained and relied upon VSS databases as large as 18Gb for several years now.
Use Exclusive Checkouts—Graphics files are binary. Neither SourceSafe nor any other source control provider that I know about can merge differences between two different versions of a binary file. Thus, you need to stick with the default (at least in VSS 6.0) exclusive checkout mode. In other words, you shouldn’t enable two designers to check out the same file simultaneously. If you were developing text files, such as C# class files, you could do so.
Don’t use Keyword Expansion in graphics files—The VSS keyword expansion feature was designed for text files. The introduction of VSS keywords into a binary file can corrupt it. For more info about VSS keywords, see
Analyze Weekly—You should Analyze your database once a week to resolve any data corruption issues. If you don’t run Analyze on a large database regularly, doing so after a long lapse can take FOREVER. For more information about Analyze, see“

Related Posts: How To: Diff/Compare Two Labels in Visual SourceSafe, Keyword Expansion in Visual SourceSafe, and How To: Edit a File Checked Out to Another User (*wherein readers disagree with my contention that checkouts should be shared, by default).

This posting is provided “AS IS” with no warranties, and confers no rights. Microsoft kann für die Richtigkeit und Vollständigkeit der Inhalte in dieser Newsgroup keine Haftung übernehmen. Este mensaje se proporciona “como está” sin garantías de ninguna clase, y no otorga ningún derecho. Ce message est fourni en l état, sans garantie d aucune sorte, et ne vous confère aucun droit. Vous assumez tous les risques liés à son utilisation. Il presente posting viene fornito così come é , senza garanzie, e non conferisce alcun diritto. ????? ?? ?????? “??? ????” ??? ?? ?????? ?? ??????, ????? ????? ?? ?????? ????.

Comments (16)

  1. Gavin Greig says:

    It’s great that non-developer use of SourceSafe is being considered by the SourceSafe team – but could you, or whoever are the most appropriate people, please, please evangelise MSSCCI to the authors of all document creation tools?

    Our organisation is very aware of the desirability of using version control software, but the biggest difficulty in using it effectively is just that, unless you’re a developer, it’s not integrated into the software you’re using. As a result, users who are generally less capable of dealing with switching context than developers are the very people who have to put up with a rotten user experience.

    Within Microsoft, support in Office would be a good start, but we really need that sort of integration in non-MS tools too, such as Adobe’s desktop publishing software. Unfortunately, we may have missed the boat slightly there, as they are now introducing their own "Version Cue", which I don’t think talks MSSCCI.

  2. .. says:

    evangelise = rant on loud enough and bore them into submission

  3. Gavin Greig says:

    So long as it works I don’t care whether it’s called evangelising or ranting.

  4. zz says:

    I don’t know if you are one to direct this question to but I’ll give it a shot:

    Do you why VSS sometimes mysteriously create a folder under a subproject the same name as the main project?



    At some point it would mysteriously create a new folder of the following:



  5. Yo zz,

    Please contact me directly (click "Contact" in the lefthand pane) with more information about what you’re doing when this happens. Are you working on a team? In Visual Studio .NET? Or some other integrated development environment? Thanks!

  6. zz says:

    Oh for fscks sake if you don’t know just say so, and stop wasting time! You can take that contrived smug helpfulness and cram it right up.

  7. zz says:

    The real zz is from New York and will contact you offline tomorrow. Thanks for the offer.

  8. SourceSafe for non-Software Developers Nice little article about how Microsoft’s Visual SourceSafe is supposed to work and, indirectly, how it…

  9. Has anyone considered version control systems (like SourceSafe) at the file system level? I would like to be able to right-click on a folder and set a "track changes" tick box and let the operating system do the rest. With a good binary differencing system it shouldn’t take up to much space and as most source control systems store the current version and reverse differences access times wouldn’t be much slower.

    Something like this would definitely be easier for users to understand and it remove the need for messy things in Windows like the recycle bin, restore points, Windows file protection and would make install/uninstall easier.

  10. College Loan says:

    Very good details and new. keep it posted.