<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SourceSafe Team's WebLog : SourceSafe Administration</title><link>http://blogs.msdn.com/checkitout/archive/tags/SourceSafe+Administration/default.aspx</link><description>Tags: SourceSafe Administration</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Globally changing "Store Only Latest Version" option</title><link>http://blogs.msdn.com/checkitout/archive/2005/01/20/357820.aspx</link><pubDate>Fri, 21 Jan 2005 01:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:357820</guid><dc:creator>CheckItOut</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/checkitout/comments/357820.aspx</comments><wfw:commentRss>http://blogs.msdn.com/checkitout/commentrss.aspx?PostID=357820</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana"&gt;User JS asks:&lt;/font&gt;&lt;/p&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;em&gt;How can I globally change the file property to retain history when a given file is checked into the source safe database ? &lt;/em&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;em&gt;Running VSS 6.0d. Currently all files are set to not retain old version on checkin (for some wierd reason). &lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font face="Verdana"&gt;You can't do this globally from VSS Explorer since File | Properties is only available when a single item is selected. Fortunately you can do this from the command line. The -L parameter of the ss properties command turns on store only latest version, while -L- turns it off. So if you want turn off the option for all the files in a project (e.g., $/foo) run the following:&lt;/font&gt;&lt;/p&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;&lt;font face="Courier New"&gt;ss properties -L- $/foo/*.*&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font face="Verdana"&gt;The properties command allows the -R (recursive) option, so to change the property for the whole database run:&lt;/font&gt;&lt;/p&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;&lt;font face="Courier New"&gt;ss properties -L- -R $/&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font face="Verdana"&gt;How might this option have been set in the first place? It's available in the advanced options of the Add File dialog in VSS Explorer, so it may have been set when files were originally added. Normally the "Store only latest version" option is unchecked when the Add File dialog comes up, but you can change this default with the Store_Deltas initialization variable in srcsafe.ini (for all users) or ss.ini (for a particular user). Store_Deltas may be set to Yes or No. Setting it to Yes (the default) causes the Add Files dialog to come up with the "Store only latest version" option unchecked. We recommend using this variable rarely. Usually you want to store deltas, and if the variable is omitted, this is the default. If the Add Files dialog is coming up with "Store only latest version" checked, inspect srcsafe.ini and ss.ini to see if Store_Deltas is set to No.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;- Rich Knox [MSFT]&lt;br /&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=357820" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/checkitout/archive/tags/Visual+SourceSafe/default.aspx">Visual SourceSafe</category><category domain="http://blogs.msdn.com/checkitout/archive/tags/Visual+SourceSafe+2005/default.aspx">Visual SourceSafe 2005</category><category domain="http://blogs.msdn.com/checkitout/archive/tags/SourceSafe+Administration/default.aspx">SourceSafe Administration</category></item><item><title>Branch and Delete Behavior</title><link>http://blogs.msdn.com/checkitout/archive/2005/01/10/350146.aspx</link><pubDate>Mon, 10 Jan 2005 20:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:350146</guid><dc:creator>CheckItOut</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/checkitout/comments/350146.aspx</comments><wfw:commentRss>http://blogs.msdn.com/checkitout/commentrss.aspx?PostID=350146</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana"&gt;A newsgroup participant recently asked:&lt;/font&gt;&lt;/p&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;&lt;font face="Courier New"&gt;After interrupting delete operations there may be orphaned objects. Those may have been branched to other objects that are still live in the database, so the history of the live object is stored in the orphaned object files. To be able to access the early versions, the orphaned object files are thus required.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;Is it possible to repair that situation or do I have to keep the files for the orphaned objects (and accept a lot of 'corrupt' information during analyze), or accept losing the live object history?&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;Does the 'analyze -d' keep the files for such orphaned objects that have been branched? In that case it would be better to use analyze -d to delete orphaned not-used file-objects while files for orphaned project-objects must be removed manually.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;If the delete operation would have finished without interruption, would the history then be moved from the file of the deleted object to the branched live object(s)?&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font face="Verdana"&gt;These are some good questions and cover some areas we're improving for VSS 2005. Let's first define some terms and discuss some details of branching and history. Then we’ll look at how delete or destroy operations on a branched file should work. Finally we’ll examine what can happen when an operation is interrupted and discuss how to recover from this situation.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Suppose we branch $/Proj1/foo.cpp to $/Proj2/foo.cpp. We refer to the file branched from ($/Proj1/foo.cpp) as the "branch parent" and the file branched to ($/Proj2/foo.cpp) as the "branch child". The relationship between branch parents and branch children is one to many. A branch parent can have many children, but each branch child has one and only one parent. Branch children can also be branch parents. That is, we can branch $/Proj1/foo.cpp to $/Proj2/foo.cpp and then branch $/Proj2/foo.cpp to $/Proj3/foo.cpp. $/Proj1/foo.cpp is the branch parent of $/proj2/foo.cpp, which is the branch parent of $/Proj3/foo.cpp.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;When a file is branched, SourceSafe makes a new copy of the file and starts a new history log for the branch child. The first entry in the history log indicates that a branch occurred and refers to the branch parent. This makes the history of the branch parent available to the branch child, but note that the branch parent's history is NOT copied to the branch child's history log.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;When we "delete" a file, SourceSafe only marks the file as deleted. The history and tip version are not physical removed but instead are retained so that the user can recover the file later if desired. Only when we "destroy" a file does SourceSafe actually do a physical removal. Even when we destroy a file, SourceSafe won’t actually remove it if it is a branch parent. Even though it doesn’t show up in SourceSafe Explorer, and we can’t recover it, the branch parent is still there to supply history for its branch children. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Now we get to the part where I have to admit that VSS 6 has some bugs. If we have a destroyed branch parent, and if it’s last branch child is also destroyed, then VSS should do a physical removal of the branch parent and reclaim the space it has been using. Unfortunately VSS 6 doesn’t do this, and neither does analyze v6 detect and remove these unused branch parents. This normally isn’t a big deal, since nothing refers to these "orphan" files. Some users, though, do a lot of branching, and eventually these orphan files may represent a significant chunk of the disk space used by their database. The good news is that for VSS 2005 we have improved orphan detection and removal for analyze and will now be able to remove these and other orphan files and reclaim their space. You need to specify the –d switch for analyze to try to remove unused files.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;So far we’ve been talking about normal VSS operations. What if we lose connection to the database in the midst of a delete or destroy operation? VSS 6 has all its intelligence on the client. The "server" is really just a file share for the database. By design the client tries to be as fault tolerant as possible, but it can’t be truly "transactional" in the same sense as SQL Server for example. A delete operation, however, is comparatively safe. SourceSafe just makes a log entry in the parent project’s history and sets a flag in the parent project’s list of children to mark the item as deleted. A network interruption could occur between writing the log entry and setting the flag, but analyze can easily fix this. In any event no files are physically removed from the database. When a delete operation is applied to a project tree, SourceSafe really deletes just the project at the root of the tree. Since this project will no longer be visible from the UI, no action is needed on its children.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;A destroy operation is more complicated and can cause some of the problems the poster was concerned with. To destroy an item, we make an entry in the parent project’s history, remove the item from the list of children, and then physically remove the files associated with the destroyed item. Furthermore, if we are destroying a project, we have to recursively destroy its children. But that’s not all. If a destroyed item has branch children, we have to retain its history, since the branch children rely on it. Obviously this can represent many round trips on the network. A large recursive destroy operation can take some time, and if we lose network connection during this operation, we’re likely to leave orphans.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;As I mentioned above VSS 6 is not as smart as it might be about orphan removal, but it is aware of branch relationships, so it won’t remove any history that we still need. If you have a database where an interrupted destroy operation has left orphans, you can safely run analyze on it. Analyze v6 may not completely clean up the orphans, but it will retain any required history. Analyze 2005 will do a much better job cleaning up the orphans while still retaining required history.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;In general interrupting a long recursive operation by terminating the VSS process can cause "bad things" to happen. There is, however, a cancel button that appears in the lower left corner of VSS Explorer during long operations. You can use this to safely cancel an operation. It’s also best to avoid running long recursive operations over an unreliable connection. If you do end up in this situation, running analyze is a safe thing to do, and it will at least partially clean up the database. VSS 2005 analyze will do better and is backwards compatible with VSS 5 or VSS 6 databases. If you still have database problems after running analyze, contact product support. A VSS 6 license comes with 2 free support incidents, and the VSS product support team has additional tools for dealing with database corruption issues.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;- Rich Knox [MSFT]&lt;br /&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;br /&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=350146" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/checkitout/archive/tags/Visual+SourceSafe/default.aspx">Visual SourceSafe</category><category domain="http://blogs.msdn.com/checkitout/archive/tags/Visual+SourceSafe+2005/default.aspx">Visual SourceSafe 2005</category><category domain="http://blogs.msdn.com/checkitout/archive/tags/SourceSafe+FAQ/default.aspx">SourceSafe FAQ</category><category domain="http://blogs.msdn.com/checkitout/archive/tags/SourceSafe+Administration/default.aspx">SourceSafe Administration</category></item><item><title>Announcing Visual SourceSafe Power Toys</title><link>http://blogs.msdn.com/checkitout/archive/2004/07/21/190725.aspx</link><pubDate>Wed, 21 Jul 2004 23:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:190725</guid><dc:creator>CheckItOut</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/checkitout/comments/190725.aspx</comments><wfw:commentRss>http://blogs.msdn.com/checkitout/commentrss.aspx?PostID=190725</wfw:commentRss><description>&lt;P&gt;A while ago the SourceSafe product team had a focus week on creating sample applications that solved common community issues. We call them &amp;#8220;PowerToys&amp;#8221;. The goal for these sample applications is to address frequently asked questions we observe in newsgroups/email/conferences etc. &lt;/P&gt;
&lt;P&gt;We also want to enable the community of SourceSafe users to enhance these sample applications with your own experience on how to make the PowerToys more useful for other SourceSafe users. To achieve this, we will publish the PowerToys as GotDotNet workspaces. That way we can collaborate with you in creating useful sample applications for the SourceSafe user community.&lt;/P&gt;
&lt;P&gt;At some point in the future we hope to be able to publish these in the SourceSafe website, for a wider audience to have access to them.&lt;/P&gt;
&lt;P&gt;The first PowerToy to be available is the &amp;#8220;SourceSafe User Manager&amp;#8221;, you can access it at:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://workspaces.gotdotnet.com/VSSUserManagerPT"&gt;http://workspaces.gotdotnet.com/VSSUserManagerPT&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;This is a simple application that allows exporting &amp;amp; importing of user lists from one SourceSafe database to another. It also allows importing a user list from a Windows group. &lt;/P&gt;
&lt;P&gt;We hope you find it useful, and maybe you are interested enough to add more functionality to it !&lt;/P&gt;
&lt;P&gt;Stay tuned for future PowerToys,&lt;/P&gt;
&lt;P&gt;[Alfredo]&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=190725" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/checkitout/archive/tags/Visual+SourceSafe/default.aspx">Visual SourceSafe</category><category domain="http://blogs.msdn.com/checkitout/archive/tags/SourceSafe+FAQ/default.aspx">SourceSafe FAQ</category><category domain="http://blogs.msdn.com/checkitout/archive/tags/SourceSafe+Administration/default.aspx">SourceSafe Administration</category></item></channel></rss>