Scenario #1:  Unintentionally duplicated files.

Your development team has a library of standard files that are intended to be used through the numerous projects they will be working on.  These are typically global libraries that address needs such as standard data access, network access, global variables, etc.  These files are shared in tens, if not hundreds, of projects.

A team member, while creating a new project, gets the latest copy of these library files he will need to support the project.  He didn't create the project and then share-in the needed files.  He created the project outside SourceSafe, got the files he needed from SourceSafe and then checked-in the entire new project to SourceSafe.

What just happened? Well, SourceSafe has no way of knowing that the files just added are copies of already existing files, so SourceSafe assumes they are new files. SourceSafe now contains an exact copy of a version of the original file.  Or even worse, modifications were made to file before the project was checked-in casting doubt on true origin of the code.

Why is this bad? Because any changes made to the original file will not be propagated to this copy and vice versa.  This project will never benefit from the sharing of files because these files are not shared.  Any bugs that are corrected in the original file will still exist in the duplicated file.  Any enhancements made to the original file will not propagate to the duplicated file.  Yet from the users view of SourceSafe, it can be very difficult to identify that the duplicated file is not the same as the original file.

This condition may go unnoticed (and typically does) for some time.  As new projects are added (using the proper way by sharing-in files), an unsuspecting user may be sharing the duplicated file!  The problem is getting worse and the potential maintenance costs are rising rapidly.


Scenario #2: Unintentionally branched files

A user is maintaining a project through the course of time.  This particular change requires a change to a shared file, so the user makes the needed changes and checks them into SourceSafe.  Later on, due to QA problems, specification changes, etc., the user (or another user) determines that those changes need to be undone.  So the project is opened up, the shared file selected, and it is rolled back to the previous version.

What does SourceSafe do?  SourceSafe properly issues a warning along the lines of: "This action will cause of branching of the shared file.  Do you wish to continue?"  Now, because the user just doesn't understand the impact, or because he feels he has no choice because he needs to restore the shared file to its former state, this user chooses to continue with the rollback.

What just happened?  Well, just as SourceSafe said, it branched that shared file.  So what?  As you know, that means from the branched version on, these two files are now unique, i.e. different files.  Just as in scenario #1 above, changes made to one file will not be automatically propagated to the other file.


Can it get worse?

It sure can.  As developers, we tend to hover around the things we are familiar with.  So if a user has a new project that needs to share a library file, he tends to go to the last project he worked on (because it is fresh in his mind) to find and share it.  This time he does it right, using all the best practices published by Microsoft and your internal procedures.  Unfortunately, the file being shared has previously been unintentionally duplicated/branched file.  And the madness continues to grow!

AND, if you are using one of those third-party reporting tools to determine who is doing what kind of work, then you have these inaccuracies automatically built into the data:


What should we do? The manual approach.

Feeling lucky and having some time on your hands, you remember that you know there are improperly duplicated files in your SourceSafe repository.  You decide to tackle the problem using SourceSafe.  Using the features of SourceSafe you:


What should we do? SSAnalyzer!

One of the key problems with the manual approach to resolving these problems is that it requires that a user at least suspect that improperly duplicated/branched files exist and then spend inordinate amounts of time and analysis to rectify the problems.

SSAnalyzer provides an automated means by which to identify, deeply research and quickly and confidently correct the problems of unintentionally duplicated and/or branched files.

Here's how:


What are the impacts of SSAnalyzer?

If you agree with following concepts, then you will completely trust SSAnalyzer to modify your SourceSafe repository:

How else does SSAnalyzer help?

First, SSAnalyzer causes no loss of SourceSafe data except in one very specific case. Second, every change that SSAnalyzer makes to your SourceSafe repository is logged in a TO-DO list. This list can be approved at the:

How quickly can SSAnalyzer help?

First, you need to ensure you have access and rights to the IT features that SSAnalyze requires. These are: Once you have satisfied these requirements, here are some time estimates based on the following configuration: Time estimates:

How to cost justify SSAnalyzer?

This part is easy!  For most organizations, the hourly cost per software developer is a bit over $50 per hour.  If that seems high, think about salary, benefits, office space, etc. because that is what is included in the average.

SSAnalyzer has a list price of $200.  So that means you have to save just four hours in order to justify the cost of SSAnalyzer.  Here are some questions to help you:


File Comparator

SSAnalyzer has a built-in file comparator with some advanced features that help in several ways:


Security concerns?

Rest assured, SSAnalyzer does not store any passwords you enter.  These passwords are used only to connect to either SQL database or your SourceSafe repository.  When connecting to SQL database, SSAnalyzer checks the target database to determine if it is an SSAnalyzer database.  If it is not, then the connection will be aborted.  Access to SourceSafe requires only a typical SourceSafe user ID and password.  You can use an existing ID, but may want to consider a new ID that will be used with SSAnalyzer so you can at least track any changes made using SSAnalyzer .