A few weeks back I had a conversation with a customer and one of our sales representatives about Surround SCM and file shares.

At the end of the call we reviewed our notes, and the sales rep asked me about shares in Surround SCM, specifically how they work under the hood.

Without hesitation, I found myself creating a drawing on the whiteboard that easily explained how shares work. Honestly, I was amazed that I never thought of this before.  Seemed like an easy way to explain how shares work.

Thus, this post. Why not share it with the world?

Think of shares in Surround SCM like a parent to child relationship.  The original file (which is called the base) is the parent, and the shares are the children.  Children are really just pointers back to the parent.  Think of a windows shortcut (.lnk files).

Through the magic of Visio, I translated the rough drawing on the whiteboard to this:
 

Surround SCM Shares

Surround SCM Shares

Shares and Branches
Another topic we discussed was how shares behave with branching. Specifically, we discussed scenarios where you may create a new branch and the shares are not replicated in the child branch. The scenario is when the branch contains a subset of the parent branch and the subset does not include the base. So in the diagram above, let’s say we take a repository that only contains two of the shares, but does not contain the base. In the new branch, both files will be independent of each other. So I went to my drawing on the whiteboard and showed this.  Again, through the magic of Visio, here you go:

Shares and branches

Shares and branches

Improvements in Surround SCM 2009
The last topic we discussed was any changes in how shares work in the latest release of Surround SCM, version 2009. When we finalized the new features and enhancements for Surround SCM 2009, nothing regarding shares made the list. If you review our release notes, you are not likely to find anything about shares that has changed.

This is mostly true. But there has been a change, and I feel a very profound one.

Prior to version 2009, many Surround SCM users found themselves in a situation where they could not share a file to a given repository. The issue was that a file with the same name already existed in that repository in some other branch. Users would have to scour through every single branch, find the file, destroy it, and then run the compact utility to ensure that all references were removed. This could become almost impossible, given that there could be numerous workspace branches and snapshots that contained the file.

In 2009 we switched to an RDBMS model for our database. While we did not redesign the way we store things in Surround SCM, like deltas and such, we did get a chance to clean up and tighten up things.

Because of this, the conflict that would prevent users from sharing files is no longer present in 2009. If you ask anyone in our support department (which I used to be a member of) 95% of all calls that came in about file sharing dealt with this issue.

This is huge.

Resources
If you want to read more about shares, visit the Surround SCM resource center, where you will find a couple of articles on shares.

Share on Technorati . del.icio.us . Digg . Reddit . Slashdot . Facebook . StumbleUpon

3 Comments

Tags: ,

3 Comments to Surround SCM Shares explained

Brett Gossage
June 4, 2009

This IS huge. This problem made refactoring within Surround almost impossible. This was due to the fact that moving a file involves a share followed by a break share. So, creating a branch for a refactoring job to be promoted later resulted in a major fail.

Time to upgrade..

Stephen Froude
June 4, 2009

Great article. Are there any plans to change the way sharing works when the base file isn’t included in a branch?

Fernando Cremer
June 4, 2009

Our switch to an RDBMS database will make it easier for us to make such a change in the future. I can not say anything definite, but I can say it is something we will consider in a future release, especially if users ask for it.

Leave a comment

WP_Big_City

Spam Protection by WP-SpamFree