<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Visual SourceSafe</title>
        <link>http://www.sharpdeveloper.net/content/category/7.aspx</link>
        <description>Visual "Source Safe", Microsoft's laughable attempt at source-control that will cost you time, effort, blood, and tears.</description>
        <language>en-US</language>
        <copyright>Sameer Alibhai</copyright>
        <managingEditor>abdullah.adam@gmail.com</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>Moving from SourceSafe to Subversion</title>
            <link>http://sharpdeveloper.net/content/archive/2008/04/24/moving-from-sourcesafe-to-subversion.aspx</link>
            <description>&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;This is an overview of some of the changes you will encounter when going from SourceSafe to Subversion.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;a href="http://subversion.tigris.org/"&gt;&lt;font color="#0000ff"&gt;Subversion&lt;/font&gt;&lt;/a&gt; is modeled on CVS, whereas &lt;a href="http://en.wikipedia.org/wiki/Visual_SourceSafe"&gt;&lt;font color="#0000ff"&gt;SourceSafe&lt;/font&gt;&lt;/a&gt; is modeled on.... well... nothing (just a joke).&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;In SourceSafe, you work in a shared code base or line (known as a “Project” in SourceSafe) which you “share” into another line.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;So you have a line that you work on, and then when you want to start adding new features or you want to change the functionality in certain pages, you share the entire line (aka “Projects”, represented by a small green folder icon &lt;img height="18" alt="SourceSafe Project Icon" width="26" src="/screenshots/sourcesafe_project_icon.png" /&gt;). &lt;br /&gt;
&lt;br /&gt;
If our first project was called &lt;strong&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Development1.0&lt;/span&gt;&lt;/strong&gt;, you can share this into a new project called &lt;strong&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Development1.1&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;At this point in time, they are identical twins. In fact, they both point to the same item, sort of like how a pointer would work, they both reference the same data. If you change one of the files in Development1.0, it will instantly be updated in Development1.1.  This means at this point there is no real point for creating this shared copy as they are the same.&lt;br /&gt;
However, if you add a new page to either Development1.0 or Development1.1, it will not appear in the other Project, it will only be in the one you put it in.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;br /&gt;
Now, if you want to “branch” some of these files, so that you can make changes to them in Development1.1, you would select them and click on “Branch files” (icon is 2 arrows coming from a file &lt;img height="23" alt="SourceSafe Branch" width="23" src="/screenshots/SourceSafe_Branch.png" /&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;This will effectively split them, so they are distinct independent copies.  All changes to either of the files will be maintained independently of the other file.&lt;br /&gt;
&lt;br /&gt;
However, since &lt;strong&gt;all the other files&lt;/strong&gt; are still shared, you might need to also branch any dependent files. This is good in some ways, because of the shared workspace others will see your changes and integration will be sooner then later, however it can also cause your work to break other people’s pages.  What that means is if your page is dependent on some shared library or business object that is going to be modified, this can get quite messy!&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;br /&gt;
As well, you might want to maintain a link going forward, but not going backward.  So you might want this file in &lt;strong&gt;Development1.1 &lt;/strong&gt;to be shared to &lt;strong&gt;Development1.2 &lt;/strong&gt;and &lt;strong&gt;Development1.3&lt;/strong&gt; but not shared to &lt;strong&gt;Development1.0&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;Keep in mind that nomatter what tool you use, the more parallel development you try to perform, the more messy and difficult your job is going to be.  AVOID HAVING TOO MUCH PARALLEL DEVELOPMENT - TRY TO CLOSE OLD BRANCHES AS SOON AS POSSIBLE.  This will save you much headache and tons of time wasted in managing lines and branches :)&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;The first recommendation when working with SourceSafe is to implement a continuous integration server, namely &lt;strong&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET"&gt;CruiseControl.NET&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;, which at the very least will automatically build at regular intervals and apply labels each time, so that it is possible to revert to a previous version. This is super important, especially if you release your code to customers, because you might want to be able to get a piece of old code and find out why it is behaving thus.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;If you do not label after every build or set of checkins, it is nearly impossible to get back to a previous version unless you are doing a very silly job of copying and maintaining a folder with all the old builds in it. &lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;With labels, you can roll back individual files, but that individual file might have depended on an older version of say a business object, and thus you will have to roll back several files manually which is very difficult.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;So CruiseControl is just a fancy batch file. It’s not too hard to set up at all, it might take you a few days, but once it’s done, its well worth it!&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;As well, names are different. For example, with Subversion you say “Commit” instead of “Check-in”.  This takes a bit of getting used to.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;br /&gt;
Also, with Subversion, by default, there is no concept of “check out”. That is quite scary for some people.   Anything you want to edit, you got it! Especially if you never turned off exclusive checkouts in SourceSafe, then you are used to the idea that if you are working on this file, nobody else can work on it. If you turn off this feature in SourceSafe, then you can have multiple checkouts, and the first person who checks in their code, wins. The rest have to manually merge the files, or depend on SourceSafe’s &lt;em&gt;&lt;span style="FONT-STYLE: italic"&gt;not so great&lt;/span&gt;&lt;/em&gt; merging tool.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;With Subversion, unless there is a conflict (aka two people edited the same line of code), you will find that it will automatically merge the changes in a smart way, which is very helpful. In fact it saves you a lot of time. And you don’t even have to worry about checking out files. Although keep in mind that you should try to check in your stuff as soon as possible otherwise you might find it has changed dramatically and you will have to merge any conflicts that happened manually. (This is because a machine has no way of knowing which change was “Right”, you may have to remove your change, or the other person’s change, or keep both, in the case of conflicts!)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;a href="http://tortoisesvn.tigris.org/"&gt;&lt;font color="#0000ff"&gt;TortoiseSVN&lt;/font&gt;&lt;/a&gt; is the best way to get started with Subversion, it’s user friendly and requires no database (uses your file system to store data) and very little set up.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;br /&gt;
It’s not just enough to switch to Subversion, you need to know some of the &lt;a href="http://www.perforce.com/perforce/bestpractices.html"&gt;&lt;font color="#0000ff"&gt;SCM best practices&lt;/font&gt;&lt;/a&gt; otherwise you will still fail. &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;It is very possible to continue working “sourcesafe style” in Subversion without realizing it and suffering the same problems.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;img src="http://sharpdeveloper.net/content/aggbug/62.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sameer Alibhai</dc:creator>
            <guid>http://sharpdeveloper.net/content/archive/2008/04/24/moving-from-sourcesafe-to-subversion.aspx</guid>
            <pubDate>Thu, 24 Apr 2008 23:25:09 GMT</pubDate>
            <wfw:comment>http://sharpdeveloper.net/content/comments/62.aspx</wfw:comment>
            <comments>http://sharpdeveloper.net/content/archive/2008/04/24/moving-from-sourcesafe-to-subversion.aspx#feedback</comments>
            <wfw:commentRss>http://sharpdeveloper.net/content/comments/commentRss/62.aspx</wfw:commentRss>
        </item>
        <item>
            <title>SourceSafe Branch Recursively</title>
            <link>http://sharpdeveloper.net/content/archive/2007/09/24/recursive-sourcesafe-branching.aspx</link>
            <description>&lt;p&gt;Did you know there is no way to branch sourcesafe projects recursively?  Or so you thought!&lt;/p&gt;
&lt;p&gt;Here is a work around:&lt;/p&gt;
&lt;p&gt;From Visual SourceSafe Explorer, go to &lt;strong&gt;View -&amp;gt; Search -&amp;gt; WildCard Search&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="166" alt="SourceSafe Wildcard Search" width="422" src="http://www.sharpdeveloper.net/screenshots/Sourcesafe_Wildcard_Search.png" /&gt;&lt;/p&gt;
&lt;p&gt;Then search for Wildcard: &lt;strong&gt;* &lt;br /&gt;
&lt;/strong&gt;(a single asterisk) with "Search in current project and all subprojects" selected.&lt;/p&gt;
&lt;p&gt;Then it will give you a list of ALL of your files in that project.  Simply highlight them all and click on the Branch button.&lt;/p&gt;
&lt;p&gt;The only caveat is that you need to make sure the files are not checked out in that project in order to branch them.&lt;/p&gt;
&lt;p&gt;And again,.. I would recommend you ditch SourceSafe and go for something better, like Perforce, Subversion, or Vault&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://sharpdeveloper.net/content/aggbug/50.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sameer Alibhai</dc:creator>
            <guid>http://sharpdeveloper.net/content/archive/2007/09/24/recursive-sourcesafe-branching.aspx</guid>
            <pubDate>Mon, 24 Sep 2007 22:05:50 GMT</pubDate>
            <wfw:comment>http://sharpdeveloper.net/content/comments/50.aspx</wfw:comment>
            <comments>http://sharpdeveloper.net/content/archive/2007/09/24/recursive-sourcesafe-branching.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://sharpdeveloper.net/content/comments/commentRss/50.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Visual Source Safe Pinning Feature</title>
            <link>http://sharpdeveloper.net/content/archive/2007/06/12/visual-source-safe-pinning-feature.aspx</link>
            <description>&lt;p class="MsoNormal"&gt; We have run into the situation before where we are developing code, but we don’t want other developers to get that code yet because it is not completely developed yet.  However, we still want to take advantage of Source Control and put it in the repository so we have incremental changes and we can rollback incase we do something dumb.  Our first solution to this was to use a &lt;span style="FONT-WEIGHT: bold"&gt;“ready” &lt;/span&gt;label and then instead of getting latest version, we would do a “Get label ready”, and then the 'ready' label was updated when the code was more stable.  However, this didn't work very well, and maybe it would have made more sense to use many different 'ready' labels, such as ready1, ready2, ready3, etc.. so that if we ever needed to revert to an older one, we could do that.  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p class="MsoNormal"&gt;However, there is a better way to accomplish this with sourcesafe, its called &lt;span style="FONT-WEIGHT: bold"&gt;“Pinning”&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;
I created a test.txt and here is the contents: blah blah version 1&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Version 1 test.txt– &lt;/p&gt;
&lt;p class="MsoNormal" style="FONT-WEIGHT: bold; MARGIN-LEFT: 40px"&gt;blah blah version 1&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Version 2 test.txt–&lt;/p&gt;
&lt;p class="MsoNormal" style="FONT-WEIGHT: bold; MARGIN-LEFT: 40px"&gt;blah blah version 2&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Version 3 test.txt–&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN-LEFT: 40px"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;blah blah version 3 BROKENNNN!!!&lt;/span&gt;&lt;strong&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font color="#000000"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;img height="336" alt="SourceSafe Pinning Feature Screenshot" width="533" src="/screenshots/sourcesafe_pinned.png" /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Now when you do a get latest version on the file or containing folder, it will give you version 2 (blah blah version 2), not version 3 - BROKENNNN!!!&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;font face="Arial" color="#000080" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Here are some more References:&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
    &lt;div class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Version Control in Source Safe  (&lt;a title="http://msdn2.microsoft.com/en-us/library/shyhfx67(VS.80).aspx)" href="http://msdn2.microsoft.com/en-us/library/shyhfx67(VS.80).aspx)"&gt;http://msdn2.microsoft.com/en-us/library/shyhfx67(VS.80).aspx)&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;How to Pin (&lt;a title="http://msdn2.microsoft.com/en-us/library/xa4cy26x(VS.80).aspx" href="http://msdn2.microsoft.com/en-us/library/xa4cy26x(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/xa4cy26x(VS.80).aspx&lt;/a&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;strong&gt;Update (June 29, 2007) - &lt;/strong&gt;If you pin a file, you CANNOT check it out and continue to work on it.  As usual, SourceSafe takes the cake!  Pinning could have been the perfect way to indicate "this version is stable, so get that one, while i continue to work on it", but it ended up being otherwise :(&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;Here is a blurb from that page:&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;br /&gt;
&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;&lt;h1 style="VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;&lt;span style="FONT-SIZE: 9.5pt; LINE-HEIGHT: 140%"&gt;Use of Pins in Version Control&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;p style="VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;font face="Verdana" size="1"&gt;&lt;span style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;Visual SourceSafe defines a &lt;em&gt;&lt;span style="FONT-STYLE: italic"&gt;pin&lt;/span&gt;&lt;/em&gt; as a marker that designates a specific version of a file as the version that is part of a project. The pin is represented by a pushpin icon, and is added through the &lt;strong&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Pin&lt;/span&gt;&lt;/strong&gt; command in the &lt;strong&gt;&lt;span style="FONT-WEIGHT: bold"&gt;History of &amp;lt;name&amp;gt;&lt;/span&gt;&lt;/strong&gt; dialog box. For more information, see &lt;span class="linkterms"&gt;&lt;a title="http://msdn2.microsoft.com/en-us/library/xa4cy26x(VS.80).aspx" href="http://msdn2.microsoft.com/en-us/library/xa4cy26x(VS.80).aspx"&gt;How to: Pin a Version&lt;/a&gt;&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;font face="Verdana" size="1"&gt;&lt;span style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;You can pin any file, but you should do this only when you are not planning to change the marked file. Pinning is most useful when applied to shared files. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table style="WIDTH: 100%; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" width="100%" border="0" class="MsoNormalTable"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="BORDER-RIGHT: rgb(221,221,221) 1pt solid; PADDING-RIGHT: 3.75pt; BORDER-TOP: rgb(221,221,221) 1pt solid; PADDING-LEFT: 3.75pt; BACKGROUND: rgb(204,204,204) 0% 50%; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: rgb(221,221,221) 1pt solid; PADDING-TOP: 3.75pt; BORDER-BOTTOM: rgb(221,221,221) 1pt solid; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="bottom" bgcolor="#cccccc"&gt;
            &lt;p class="MsoNormal" style="MARGIN-BOTTOM: 7.5pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in"&gt;&lt;strong&gt;&lt;font face="Times New Roman" size="1"&gt;&lt;span style="FONT-WEIGHT: bold; FONT-SIZE: 8.5pt"&gt;&lt;img class="note" id="_x0000_i1028" height="10" alt="Note" width="10" border="0" src="cid:image003.gif@01C7ACE2.FE47C050" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 3.75pt; BORDER-TOP: medium none; PADDING-LEFT: 3.75pt; BACKGROUND: white 0% 50%; PADDING-BOTTOM: 3.75pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 3.75pt; BORDER-BOTTOM: 1pt solid; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top" bgcolor="#ffffff"&gt;
            &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;font face="Times New Roman" size="1"&gt;&lt;span style="FONT-WEIGHT: bold; FONT-SIZE: 8.5pt"&gt;Note&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;font size="1"&gt;&lt;span style="FONT-SIZE: 8.5pt"&gt;   When you pin a shared file, you cannot make changes to it until you unpin it using the &lt;strong&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Unpin&lt;/span&gt;&lt;/strong&gt; command from the &lt;strong&gt;&lt;span style="FONT-WEIGHT: bold"&gt;History of &amp;lt;name&amp;gt;&lt;/span&gt;&lt;/strong&gt; dialog box.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p style="VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;font face="Verdana" size="1"&gt;&lt;span style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;If you share a pinned version of a file, the projects sharing the file cannot change it. However, if you share an unpinned file, and then pin it in one project, other projects can still change and update the file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;font face="Verdana" size="1"&gt;&lt;span style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;Let's examine an example of using pins for version control. One developer has prepared a spell checker program. The first time the version of the program is stable, the developer uses pins to mark particular versions of the program code files. He then notifies a developer of a grammar checker program that uses the spell checker code that a good version is available. The second developer can share and branch the code and use the pinned file versions as the basis for his spell checking components of the grammar checker program. He only obtains the last known good code files for the spell checker, unless the first programmer unpins his file versions at some point.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;img src="http://sharpdeveloper.net/content/aggbug/26.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sameer Alibhai, Ashiq Alibhai</dc:creator>
            <guid>http://sharpdeveloper.net/content/archive/2007/06/12/visual-source-safe-pinning-feature.aspx</guid>
            <pubDate>Tue, 12 Jun 2007 21:45:52 GMT</pubDate>
            <wfw:comment>http://sharpdeveloper.net/content/comments/26.aspx</wfw:comment>
            <comments>http://sharpdeveloper.net/content/archive/2007/06/12/visual-source-safe-pinning-feature.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://sharpdeveloper.net/content/comments/commentRss/26.aspx</wfw:commentRss>
        </item>
        <item>
            <title>SourceSafe Merges Changes, Not Branches!</title>
            <link>http://sharpdeveloper.net/content/archive/2007/06/06/sourcesafe-merges-changes-not-branches.aspx</link>
            <description>&lt;div style="margin: 0in 0in 0pt;"&gt;If you've ever had two or more source-safe projects with shared files, you might be shocked to learn that Visual SourceSafe 2005 breaks one of the holy grails of good design: &lt;strong&gt;user expectations&lt;/strong&gt;. Again. (For the first incarnation of this evil act, see &lt;a href="http://www.sharpdeveloper.net/content/archive/2007/06/06/sourcesafe-shares-deleted-files.aspx"&gt;&lt;strong&gt;SourceSafe Shares Deleted Files&lt;/strong&gt;&lt;/a&gt;)&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt; &lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;You would &lt;em&gt;expect&lt;/em&gt; that, if you merge a branched file from one project, it gets shared. I mean, you &lt;em&gt;merged &lt;/em&gt; it, right? What was once double maintenance should become a single, unified soul. But alas, &lt;strong&gt;Visual SouceSafe 2005 merges changes, not branches!&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt; &lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;To test this out, try the following:&lt;/div&gt;
&lt;ul type="disc" style="margin-top: 0in;"&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;Create a &lt;strong&gt;new project&lt;/strong&gt; (call it "Test-A") &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Add&lt;/strong&gt; &lt;strong&gt;some files&lt;/strong&gt; (some HTML or text files work best) &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;Create a &lt;strong&gt;new project &lt;/strong&gt;(call it "Test-B") &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;Browse into Test-A, and select and&lt;strong&gt; drag some files into Test-B &lt;/strong&gt;to share them &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Branch &lt;/strong&gt;one of the shared files &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Edit&lt;/strong&gt; the branched file in Test-B and &lt;strong&gt;add a line&lt;/strong&gt; with "B: " at the prefix &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Edit&lt;/strong&gt; the branched file in Test-A and &lt;strong&gt;add a line&lt;/strong&gt; with "A: " at the prefix &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;Select the branched file in Test-A, browse to the &lt;strong&gt;Versions&lt;/strong&gt; menu, and click &lt;strong&gt;Merge Branches ...&lt;/strong&gt; &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;Select the &lt;strong&gt;Test-B branch&lt;/strong&gt; to merge to &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Resolve&lt;/strong&gt; any conflicts &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Check in &lt;/strong&gt;the file &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;&lt;em&gt;The file is still branched!&lt;/em&gt;&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;The only consolation you may have, is that you can &lt;strong&gt;delete one version and manually re-share the file&lt;/strong&gt; (for example, by dragging and dropping the merged version into the other project folder) in order to get a &lt;em&gt;real&lt;/em&gt; merge. But, if you have a large project with hundreds of files, set aside a few days just for merging. (Or save yourself the tedious and error-prone work by switching to &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt;, Perforce, or some other &lt;em&gt;real&lt;/em&gt; source-control solution.)&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt; &lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;So consider yourself warned!&lt;br /&gt;
By &lt;span style="font-weight: bold;"&gt;Ashiq Alibhai&lt;/span&gt;&lt;/div&gt;&lt;img src="http://sharpdeveloper.net/content/aggbug/20.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sameer Alibhai, Ashiq Alibhai</dc:creator>
            <guid>http://sharpdeveloper.net/content/archive/2007/06/06/sourcesafe-merges-changes-not-branches.aspx</guid>
            <pubDate>Wed, 06 Jun 2007 22:05:42 GMT</pubDate>
            <wfw:comment>http://sharpdeveloper.net/content/comments/20.aspx</wfw:comment>
            <comments>http://sharpdeveloper.net/content/archive/2007/06/06/sourcesafe-merges-changes-not-branches.aspx#feedback</comments>
            <wfw:commentRss>http://sharpdeveloper.net/content/comments/commentRss/20.aspx</wfw:commentRss>
        </item>
        <item>
            <title>SourceSafe Shares Deleted Files!</title>
            <link>http://sharpdeveloper.net/content/archive/2007/06/06/sourcesafe-shares-deleted-files.aspx</link>
            <description>&lt;p&gt;If you've ever had two or more source-safe projects with shared files, you might be shocked to learn that Visual SourceSafe 2005 breaks one of the holy grails of good design: &lt;strong&gt;user expectations&lt;/strong&gt;.&lt;/p&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt; &lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;You would &lt;em&gt;expect&lt;/em&gt; that, if you delete a shared file from one project, it gets branched. I mean, you &lt;em&gt;deleted&lt;/em&gt; it, right? You said goodbye, kaputsky, sayounara! But alas, &lt;strong&gt;Visual SouceSafe 2005 shares deleted files!&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt; &lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;To test this out, try the following:&lt;/div&gt;
&lt;ul type="disc" style="margin-top: 0in;"&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;Create a &lt;strong&gt;new project&lt;/strong&gt; (call it "Test-A") &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Add&lt;/strong&gt; &lt;strong&gt;some files&lt;/strong&gt; (some HTML or text files work best) &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;Create a &lt;strong&gt;new project &lt;/strong&gt;(call it "Test-B") &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;Browse into Test-A, and select and&lt;strong&gt; drag some files into Test-B &lt;/strong&gt;to share them &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Delete&lt;/strong&gt; one of the shared files (non-permanently) &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Browse&lt;/strong&gt; to Test-B &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;&lt;em&gt;The file is still shared!&lt;/em&gt;&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt; &lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;Shocking! What's worse, the deleted file &lt;strong&gt;continues to be updated if the other version is updated!&lt;/strong&gt; Try it for yourself:&lt;/div&gt;
&lt;ul type="disc" style="margin-top: 0in;"&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Browse&lt;/strong&gt; to Test-B &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;Check-out, &lt;strong&gt;edit&lt;/strong&gt;, and check-in one of the files you deleted &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Browse&lt;/strong&gt; to Test-A &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;Recover&lt;/strong&gt; the deleted file (right-click on the project and select &lt;strong&gt;Project Properties&lt;/strong&gt;, go to the &lt;strong&gt;Deleted Items&lt;/strong&gt; tab, and click &lt;strong&gt;Recover&lt;/strong&gt;) &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;View&lt;/strong&gt; the file &lt;/li&gt;
    &lt;li style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt;&lt;em&gt;The file has the same changes as its twin in Test-B!&lt;/em&gt;&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;The only consolation you may have, is that if you &lt;strong&gt;destroy permanently&lt;/strong&gt; when you delete a shared file, it becomes branched--albeit with a hideous, ugly warning pop-up.&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt; &lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt;"&gt;So consider yourself warned!&lt;br /&gt;
By &lt;span style="font-weight: bold;"&gt;Ashiq Alibhai&lt;/span&gt;&lt;/div&gt;&lt;img src="http://sharpdeveloper.net/content/aggbug/19.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sameer Alibhai, Ashiq Alibhai</dc:creator>
            <guid>http://sharpdeveloper.net/content/archive/2007/06/06/sourcesafe-shares-deleted-files.aspx</guid>
            <pubDate>Wed, 06 Jun 2007 22:05:07 GMT</pubDate>
            <wfw:comment>http://sharpdeveloper.net/content/comments/19.aspx</wfw:comment>
            <comments>http://sharpdeveloper.net/content/archive/2007/06/06/sourcesafe-shares-deleted-files.aspx#feedback</comments>
            <wfw:commentRss>http://sharpdeveloper.net/content/comments/commentRss/19.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Visual SourceSafe 2005 Tip (VS2005) - Keywords</title>
            <link>http://sharpdeveloper.net/content/archive/2007/05/29/visual-source-safe-comments.aspx</link>
            <description>&lt;font size="2"&gt;Using Visual SourceSafe, we can put some text at the top of our source file and it will automatically be updated by SourceSafe when you check in the file.  See below for an example.&lt;/font&gt;&lt;font color="#008000" size="2"&gt;
&lt;p&gt;// Last updated by:&lt;br /&gt;
// $Author: Sameera $&lt;br /&gt;
// $Date: 4/13/07 11:16a $&lt;/p&gt;
&lt;/font&gt;
&lt;p&gt;&lt;font size="2"&gt;This will allow you to quickly see who was the last person who checked in the file.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://sharpdeveloper.net/content/aggbug/10.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sameer</dc:creator>
            <guid>http://sharpdeveloper.net/content/archive/2007/05/29/visual-source-safe-comments.aspx</guid>
            <pubDate>Tue, 29 May 2007 15:19:52 GMT</pubDate>
            <wfw:comment>http://sharpdeveloper.net/content/comments/10.aspx</wfw:comment>
            <comments>http://sharpdeveloper.net/content/archive/2007/05/29/visual-source-safe-comments.aspx#feedback</comments>
            <wfw:commentRss>http://sharpdeveloper.net/content/comments/commentRss/10.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>