How To: Copy a File from One VSS Project to Another

To COPY a file in VSS Explorer:

  1. Right-click the file in project A and hold.
  2. Drag it to project B.
  3. Drop it.
  4. Click Share and Branch.

I don't know why SourceSafe's creators chose to use Share & Branch when the perfectly acceptable Copy was available... but I can certainly guess.

For clues, I visited the original OneTree Software documentation for SourceSafe.  In the section regarding Shared Files, I found this gem: "SourceSafe projects are very analogous to operation system directories and folders. However, projects have one valuable power that directories lack. Whereas every file in your operating system exists uniquely in one directory, a SourceSafe file can exist in many different projects at once!"

Exclamation point! As a writer, I can assure you that an exclamation point is a truly meaningful (and telling!) entity. We don't just throw exclamation points around in shipping docs (!) like we do in our blogs!  In fact, I challenge you to find one exclamation point in the entire Visual Studio and .NET Framework documentation that is used for emphasis (in text).

I believe [conspiratorial voice here] that the choice of the verb Share and thus Share and Branch* and thus the exclamation point(!) was the direct result of a zealous, implementation detail-blinded software development team's attempt to differentiate and delineate its product and conceptual user model from other applications. The subtext of this paragraph is, 'Share is not the same as Shortcut.  SHARE DOES NOT EQUAL SHORTCUT. We're different from Windows.'  And to pound that point home, I'm guessing that SourceSafe's creators chose to use the Share and Branch command verb (or its equivalent*) over the more universally understood and intuitive alternative: Copy.  If my assumption is correct, this is one of the worst UI text blunders in history.  I reserve the right to be wrong and invite your corrections, especially if you're a member of the original SourceSafe design team (c'mon, post as Anonymous). :-)

*In early versions of SourceSafe, Branch was known as Separate.

++++++++++++++++++++++++++++++
הודעה זו מסופקת "כפי שהיא" ללא כל אחריות או חיובים, ואינה נותנת לך זכויות כלשה.

Published 24 November 03 08:56 by KorbyP

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# RIchB said on November 25, 2003 3:20 AM:
In case you get an anonymous post, the original SourceSafe team consisted of just Brian Harry and Kenny Felder ;-)
# Martin Brown said on November 25, 2003 4:28 AM:
Is my memory serving me correctly? I think it is not so many versions of VSS ago that there was no share and branch (copy) operation. To do a copy you had to first share the file and then branch it as a second action. I guess the team at the time just created a new routine that called the other two and thus the name.
# Mathieu said on November 25, 2003 8:34 AM:
The word 'branch' has a very specific meaning to a source control system user, and it's not 'copy'. It takes an extisting file and maintains a seperate history on it in a different location than the original file. If you were about to ship your product, foobar version 1.0, and then you had planned on continuing development by adding FEATURE_X to the product shortly after, it would be nice to keep a copy of foobar version 1.0 around so that you could respond to support queries and be able to offer a short-term service release if necessary. To accomplish this, you would share your project into a different location, and then branch the files. (In the best source control systems, this is an atomic operation so that it can't be screwed up in the middle.) So, when you're trying to 'Copy' a file from one place to another in VSS, do you really want a seperate copy of it or do you want the two files to be identical? I'm sure the original VSS developers knew that people would like to be able to do both. There is no other source control system that I am aware of that actually allows both, so it is actually a unique feature of VSS that you have the ability to share files between projects. The terminology could be changed to "Copy" and "Create Shortcut", but I wouldn't expect a copied file to maintain it's history any more than I'd expect a copied file in Explorer to maintain the last-modified-time...
# anon said on November 25, 2003 8:35 AM:
I used SourceSafe back when OneTree still sold it. I could be wrong, but I believe "share" and either "branch" or "separate" existed back in Win16 versions of SS (before Win95 was on the scene)...so the "share != shortcut" assertion may not be at the root of what they did. As an aside, does anyone remember the tree in the SS about box that would go through the four seasons if you left it onscreen?
# Me said on November 25, 2003 3:33 PM:
"Share and Branch" accurately implies that the copy retains a link to the original, and can subsequently be merged. "Copy" would imply to me that the copy is subsequently maintained completely independently from the original.
# hosebeast said on December 27, 2003 1:43 PM:
In addition to others' points about history, a "shared" instance is different from the Windows concept of "shortcut" because you can delete any instance without deleting the actual file (until you have deleted all shared instances). In Windows, we have to differentiate between a shortcut and the real file. If you delete a shortcut, it leaves the file. If you delete the file, it leaves orphaned shortcut(s). NTFS junction points are closer to "share" (but not "share and branch").
# Kelley said on January 12, 2004 4:45 PM:
Correct me if I am wrong, but branching after the share, will erase the link that was made when chosing to share. So, sharing then branching would be the same as "Copy"
# Scott McCulloch said on January 23, 2004 7:35 PM:

Leave a Comment

(required) 
(optional)
(required) 

Search

Go

This Blog

Syndication

Page view tracker