<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>syntevo blogshelves</title>
    <link>http://blog.syntevo.net/tags/shelves/</link>
    <description />
    <language>en</language>
    <copyright>syntevo GmbH</copyright>
    <pubDate>Fri, 18 May 2012 13:36:00 GMT</pubDate>
    <dc:creator>syntevo GmbH</dc:creator>
    <dc:date>2012-05-18T13:36:00Z</dc:date>
    <dc:language>en</dc:language>
    <dc:rights>syntevo GmbH</dc:rights>
    <image>
      <title>syntevo blogshelves</title>
      <url>http://blog.syntevo.net/tags/shelves/</url>
    </image>
    <item>
      <title>Shelves in SmartSVN</title>
      <link>http://blog.syntevo.net/2010/10/09/1286617560000.html</link>
      <content:encoded>&lt;p&gt;
"Shelves" can be helpful in various situations to "save" the changes of your working copy away for later application. In his &lt;a href="http://markphip.blogspot.com/2007/01/shelves-in-subversion.html"&gt;article&lt;/a&gt;, Mark Phippard points out five common scenarios:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Interrupt&lt;/b&gt; When you have pending changes that are not ready for check in but you need to work on a different task, you can shelve your pending changes to set them aside.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Integration&lt;/b&gt; When you have pending changes that are not ready for check in but you need to share them with another team member, you can shelve your pending changes and ask your team member to unshelve them.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Review&lt;/b&gt; When you have pending changes that are ready for check-in and have to be code-reviewed, you can shelve your changes and inform the code reviewer of the shelveset.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Backup&lt;/b&gt; When you have work in progress that you want to back up, but are not ready to check in, you can shelve your changes to have them preserved on the Team Foundation server.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Handoff&lt;/b&gt; When you have work in progress that is to be completed by another team member, you can shelve your changes to make a handoff easier.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;How shelves in Subversion work&lt;/h1&gt;

&lt;p&gt;
In SVN, shelves can be implemented using short-living branches. To have a better distinction from branches, it's advisable to create a new top-level directory &lt;i&gt;shelves&lt;/i&gt; in your project, which will receive these branches. Also, shelves are usually assigned to individual users, thus introducing one more level of hierarchy to also keep a large amount of shelves manageable easily. Here is an excerpt of SmartSVN's own repository structure:
&lt;/p&gt;

&lt;tt&gt;
/smartsvn&lt;br&gt;
&amp;nbsp;+ branches&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;+ release-6.6&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br&gt;
&amp;nbsp;+ shelves&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;+ marc&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ svn-1.7&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;+ tom&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ quaqua&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ docking-manager&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br&gt;
&amp;nbsp;+ tags&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;+ release-6.6.0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;+ release-6.6.1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br&gt;
&amp;nbsp;+ &lt;i&gt;trunk&lt;/i&gt;&lt;br&gt;
&lt;/tt&gt;

&lt;h1&gt;How to use shelves in SmartSVN&lt;/h1&gt;

&lt;p&gt;
In SmartSVN, you have to configure the &lt;i&gt;tag-branch-layout&lt;/i&gt; of your project to recognize shelves as well: use &lt;b&gt;Tag+Branch&lt;/b&gt;|&lt;b&gt;Configure Layout&lt;/b&gt; and enter &lt;tt&gt;branches/*, shelves/*/*&lt;/tt&gt; in the &lt;b&gt;Branches&lt;/b&gt; input field.
&lt;/p&gt;

&lt;p&gt;
Now you can shelve your local changes by &lt;b&gt;Tag+Branch&lt;/b&gt;|&lt;b&gt;Add Branch&lt;/b&gt;. Enter a reasonable &lt;b&gt;Name&lt;/b&gt; for the shelve there, in our example e.g. &lt;tt&gt;shelves/marc/log-refactoring&lt;/tt&gt;. Have the &lt;b&gt;Source&lt;/b&gt; set to &lt;b&gt;Working Copy&lt;/b&gt; and have &lt;b&gt;Skip local changes&lt;/b&gt; selected, to start a clean branch. Select &lt;b&gt;Switch to branch&lt;/b&gt; and finally create the shelf using &lt;b&gt;Add Branch&lt;/b&gt;.
&lt;p&gt;

&lt;p&gt;
After the shelf has been created and the working copy has been switched to the shelf, you can commit your local changes using one or more commits, whatever will be appropriate for the purpose of the shelf. You can finally switch back (&lt;b&gt;Modify&lt;/b&gt;|&lt;b&gt;Switch&lt;/b&gt;) to the trunk resp. the former branch you had been working and start a new task.
&lt;/p&gt;

&lt;p&gt;
To reintegrate your changes into the desired branch, switch to the desired branch, use &lt;b&gt;Modify&lt;/b&gt;|&lt;b&gt;Merge&lt;/b&gt; and pick the shelf.
&lt;/p&gt;&lt;div class="tags"&gt;&lt;span&gt;Social Bookmarks : &lt;/span&gt;&amp;nbsp;&lt;a href="http://slashdot.org/bookmark.pl?url=http://blog.syntevo.net/2010/10/09/1286617560000.html&amp;amp;title=Shelves+in+SmartSVN" target="_blank" title="Add this post to Slash Dot"&gt;&lt;img src="common/images/slashdot.png" alt="Add this post to Slashdot" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?url=http://blog.syntevo.net/2010/10/09/1286617560000.html&amp;amp;title=Shelves+in+SmartSVN" target="_blank" title="Digg this post"&gt;&lt;img src="common/images/digg.png" alt="Add this post to Digg" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://reddit.com/submit?url=http://blog.syntevo.net/2010/10/09/1286617560000.html&amp;amp;title=Shelves+in+SmartSVN" target="_blank" title="Add this post to Reddit"&gt;&lt;img src="common/images/reddit.png" alt="Add this post to Reddit" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http://blog.syntevo.net/2010/10/09/1286617560000.html&amp;amp;title=Shelves+in+SmartSVN" target="_blank" title="Save this post to Del.icio.us"&gt;&lt;img src="common/images/delicious.png" alt="Add this post to Delicious" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.stumbleupon.com/submit?url=http://blog.syntevo.net/2010/10/09/1286617560000.html&amp;amp;title=Shelves+in+SmartSVN" target="_blank" title="Stumble this post"&gt;&lt;img src="common/images/stumbleupon.png" alt="Add this post to Stumble it" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;bkmk=http://blog.syntevo.net/2010/10/09/1286617560000.html&amp;amp;title=Shelves+in+SmartSVN" target="_blank" title="Add this post to Google"&gt;&lt;img src="common/images/google.png" alt="Add this post to Google" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http://blog.syntevo.net/2010/10/09/1286617560000.html" target="_blank" title="Add this post to Technorati"&gt;&lt;img src="common/images/technorati.png" alt="Add this post to Technorati" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.bloglines.com/sub/http://blog.syntevo.net/2010/10/09/1286617560000.html" target="_blank" title="Add this post to Bloglines"&gt;&lt;img src="common/images/bloglines.png" alt="Add this post to Bloglines" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.facebook.com/share.php?u=http://blog.syntevo.net/2010/10/09/1286617560000.html" target="_blank" title="Add this post to Facebook"&gt;&lt;img src="common/images/facebook.png" alt="Add this post to Facebook" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.furl.net/storeIt.jsp?u=http://blog.syntevo.net/2010/10/09/1286617560000.html&amp;amp;t=Shelves+in+SmartSVN" target="_blank" title="Add this post to Furl"&gt;&lt;img src="common/images/furl.png" alt="Add this post to Furl" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="https://favorites.live.com/quickadd.aspx?mkt=en-us&amp;amp;url=http://blog.syntevo.net/2010/10/09/1286617560000.html&amp;amp;title=Shelves+in+SmartSVN" target="_blank" title="Add this post to Windows Live"&gt;&lt;img src="common/images/windowslive.png" alt="Add this post to Windows Live" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;amp;u=http://blog.syntevo.net/2010/10/09/1286617560000.html&amp;amp;t=Shelves+in+SmartSVN" target="_blank" title="Add this post to Yahoo!"&gt;&lt;img src="common/images/yahoo.png" alt="Add this post to Yahoo!" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;</content:encoded>
      <category domain="http://blog.syntevo.net/tags/shelves/">shelves</category>
      <category domain="http://blog.syntevo.net/tags/smartsvn/">smartsvn</category>
      <category domain="http://blog.syntevo.net/tags/tips/">tips</category>
      <pubDate>Sat, 09 Oct 2010 09:46:00 GMT</pubDate>
      <guid isPermaLink="false">tag:blog.syntevo.net,2010-10-09:default/1286617560000</guid>
      <dc:date>2010-10-09T09:46:00Z</dc:date>
    </item>
  </channel>
</rss>


