<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.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>Floehopper: Tag version</title>
    <link>http://blog.floehopper.org/articles/tag/version?tag=version</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>thoughts on the bergy bits of life</description>
    <item>
      <title>Prefer Commit Notes over Comments</title>
      <description>&lt;p&gt;My colleague, &lt;a href="http://blog.seagul.co.uk/"&gt;Chris&lt;/a&gt;, recently posted about &lt;a href="http://blog.seagul.co.uk/articles/2008/03/28/version-control-commit-note-best-practice-or-not-you-decide"&gt;what makes a good commit note&lt;/a&gt;. His main point is that a good commit note should explain &lt;strong&gt;why&lt;/strong&gt; the changeset exists rather than &lt;strong&gt;what&lt;/strong&gt; it contains (which should be more self-evident). I agree with this and (as Chris mentions) it&amp;#8217;s of particular benefit when you have to do some software archeology. I&amp;#8217;d go a step further and say that, for me, the best commit notes express the &lt;em&gt;business&lt;/em&gt; reason for the changeset. If as a developer you are struggling to explain the business case for a particular change, (imho) you should try to find out before committing &amp;#8211; otherwise how do you know the changeset is delivering value to the business?&lt;/p&gt;


	&lt;p&gt;In a previous post about &lt;a href="http://blog.floehopper.org/articles/2007/05/10/prefer-tests-over-comments"&gt;preferring tests over comments&lt;/a&gt;, I expressed similar sentiments about using comments and tests to explain &lt;strong&gt;why&lt;/strong&gt; rather than &lt;strong&gt;what&lt;/strong&gt;. Chris&amp;#8217; post prompted me to re-read that old post and I noticed that it didn&amp;#8217;t explain why I &lt;a href="http://blog.floehopper.org/articles/2007/05/10/prefer-tests-over-comments"&gt;prefer tests over comments&lt;/a&gt;. The reason is that comments have a nasty habit of becoming out-of-date and getting left lying around to confuse the unwary, whereas you are forced to keep tests up-to-date (assuming they are part of a &lt;a href="http://martinfowler.com/articles/continuousIntegration.html"&gt;continuous integration build&lt;/a&gt;). For similar reasons I also think that commit notes are better than code comments, because they are forever associated with a snapshot of the code at the time they were written &amp;#8211; leaving less scope for confusion.&lt;/p&gt;</description>
      <pubDate>Sat, 29 Mar 2008 19:05:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:11955d9f-4314-46f7-b708-dca8b3860930</guid>
      <author>James Mead</author>
      <link>http://blog.floehopper.org/articles/2008/03/29/prefer-commit-notes-over-comments</link>
      <category>version</category>
      <category>control</category>
      <category>commit</category>
      <category>note</category>
      <category>changeset</category>
      <category>svn</category>
      <category>vcs</category>
      <category>comment</category>
      <category>why</category>
      <category>what</category>
    </item>
    <item>
      <title>Rails Plugin Versioning</title>
      <description>&lt;p&gt;A while ago &lt;a href="http://jayfields.blogspot.com/"&gt;Jay Fields&lt;/a&gt; described a number of ways to &lt;a href="http://jayfields.blogspot.com/2006/10/rubygems-shared-ruby-code.html"&gt;share Ruby code&lt;/a&gt; between projects and focussed on a useful technique which involves using &lt;a href="http://rubyforge.org/projects/rubygems/"&gt;RubyGems&lt;/a&gt; and unpacking them into your vendor directory. He also mentions the difficulties of versioning with &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt; plugins.&lt;/p&gt;


	&lt;p&gt;We use a number of &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt; plugins at &lt;a href="http://www.reevoo.com"&gt;Reevoo&lt;/a&gt;. Initially we used &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; externals to include them in our projects, but for a while now we&amp;#8217;ve been successfully using &lt;a href="http://blog.teksol.info/"&gt;François Beausoleil&amp;#8217;s&lt;/a&gt; &lt;a href="http://piston.rubyforge.org/"&gt;Piston&lt;/a&gt; which is effectively an extension to &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt;. You end up with a copy of the plugin code in your own repository with the relevant revision number from the remote repository stored in your own &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; metadata. &lt;a href="http://piston.rubyforge.org/"&gt;Piston&lt;/a&gt; prevents you getting new versions of the plugin code every time you update (as you would with an svn:external) which can lead to unexpected changes, but makes it straightforward to update to a newer version of a plugin when you want.&lt;/p&gt;


	&lt;p&gt;You can find Piston &lt;a href="http://piston.rubyforge.org/"&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Sat, 02 Dec 2006 09:36:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:7ee628bb-96af-47f0-8e6e-0f66c2a5e03f</guid>
      <author>James Mead</author>
      <link>http://blog.floehopper.org/articles/2006/12/02/rails-plugin-versioning</link>
      <category>ruby</category>
      <category>rails</category>
      <category>plugin</category>
      <category>piston</category>
      <category>rubygem</category>
      <category>version</category>
      <category>svn</category>
      <category>external</category>
    </item>
  </channel>
</rss>
