<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Yup Dot Com: Better Subversion External Branch Management with Piston</title>
    <link>http://www.yup.com/articles/2006/11/01/better-subversion-external-branch-management-with-piston</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Advanced Web Services</description>
    <item>
      <title>Better Subversion External Branch Management with Piston</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin: 4px; padding: 4px; border: 1px dotted #ccc;" src="http://static.flickr.com/53/167075855_2bf474f73f_m.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;Subversion exports can be difficult to manage in your Ruby on Rails application, especially if you want to make local changes to a vendor-supplied plugin that shouldn&amp;#8217;t really be applied back to that vendor&amp;#8217;s trunk (or cannot be). Another reason to keep the vendor&amp;#8217;s code checked into your own tree, is that you&amp;#8217;ll be able to better see changes to the vendor&amp;#8217;s code as they happen and assess the impact on your own code, as well as audit vendor changes that break your application in some way. Externals cannot provide such a safety net. So, into the cylinder of Rails plugins enters Piston by François Beausoleil of Sherbrooke, Québec, Canada. His description:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Piston is a utility that eases vendor branch management. This is similar to &lt;code&gt;svn:externals&lt;/code&gt;, except you have a local copy of the files, which you can modify at will. As long as the changes are mergeable, you should have no problems.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Watch him demonstrate its usage:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;$ piston import http://dev.rubyonrails.org/svn/rails/trunk vendor/rails
Exported r4720 from 'http://dev.rubyonrails.org/svn/rails/trunk' to 'vendor/rails'
$ svn commit -m &amp;quot;Importing local copy of Rails&amp;quot;
$ piston update vendor/rails
Updated 'vendor/rails' to r4720.
$ svn commit -m &amp;quot;Updates vendor/rails to the latest revision&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;As a bonus feature, you can lock piston-gripped trees with &lt;code&gt;piston lock&lt;/code&gt; to prevent subversion from updating past a specific vendor&amp;#8217;s revision that works with your application. Nice work, François.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://piston.rubyforge.org/"&gt;Piston @ RubyForge&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 01 Nov 2006 20:59:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:c411d003-fa9d-41f6-a0b2-24e7a468ff3d</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/11/01/better-subversion-external-branch-management-with-piston</link>
      <category>Ruby on Rails</category>
    </item>
  </channel>
</rss>
