Our project is held in a SourceSafe database. We have an automated build, which runs every evening on a dedicated build machine. As part of our build process, we get the source and associated data for the installation from SourceSafe. This can take quite some time and makes up the bulk of the build process (which is otherwise dominated by the creation of installation files).
Currently, we use the command line tool, ss.exe, to interact with SourceSafe. The commands we use are for a recursive get of the project source and data, checkout of version files, check-in of updated version files, and labeling. However, I know that SourceSafe also supports an object model.
- Does anyone have any experience with this object model?
- Does it provide any advantages over using the command line tool that might be useful in our process?
- Are there any disadvantages?
- Would we gain any performance increase from using the object model over the command line?
I should imagine the command line is implemented internally with the same code as you’d find in the object model, so unless there’s a large amount of startup required, it shouldn’t make much of a difference.
The cost of rewriting to use the object model is probably more than would be saved in just leaving it go as it is. Unless you have a definite problem with the time taken, I doubt this will be much of a solution for you.
You could investigate shadow directories so the latest version is always available, so you don’t have to perform a ‘getlatest’ every time, and you could ensure that you’re talking to a local VSS (as all commands are performed directly on the filesystem, so WAN operations are tremendously expensive).
Otherwise, you’re stuck unless you’d like to go with a different SCM (and I recommend SVN – there’s an excellent converter available on codeplex for it, with example code showing how to use the VSS ans SVN object models)