June 2, 2009
Surround SCM Shares explained
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: [caption id="attachment_273" align="aligncenter" width="604" caption="Surround SCM Shares"][/caption] 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: [caption id="attachment_283" align="aligncenter" width="610" caption="Shares and branches"][/caption] 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.