<?xml version="1.0" encoding="UTF-8"?><rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
> <channel><title>Comments on: Branching: do it like this and nobody gets hurt</title> <atom:link href="http://www.build-doctor.com/2008/09/10/branching-do-it-like-this-and-nobody-gets-hurt/feed/" rel="self" type="application/rss+xml" /><link>http://www.build-doctor.com/2008/09/10/branching-do-it-like-this-and-nobody-gets-hurt/</link> <description>Continuous Integration, Delivery and Devops Consulting</description> <lastBuildDate>Thu, 02 Feb 2012 22:31:14 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>By: 2008 in posts &#8212; The Build Doctor</title><link>http://www.build-doctor.com/2008/09/10/branching-do-it-like-this-and-nobody-gets-hurt/comment-page-1/#comment-217</link> <dc:creator>2008 in posts &#8212; The Build Doctor</dc:creator> <pubDate>Tue, 30 Dec 2008 15:31:41 +0000</pubDate> <guid
isPermaLink="false">http://beta.build-doctor.com/?p=99#comment-217</guid> <description>[...] September: Branching: do it like this and nobody gets hurt [...]</description> <content:encoded><![CDATA[<p>[...] September: Branching: do it like this and nobody gets hurt [...]</p> ]]></content:encoded> </item> <item><title>By: Julian</title><link>http://www.build-doctor.com/2008/09/10/branching-do-it-like-this-and-nobody-gets-hurt/comment-page-1/#comment-216</link> <dc:creator>Julian</dc:creator> <pubDate>Fri, 12 Sep 2008 05:49:00 +0000</pubDate> <guid
isPermaLink="false">http://beta.build-doctor.com/?p=99#comment-216</guid> <description>Douglas, Jon. Thanks for your comments.  I think I want to do a longer post on this topic.&lt;br/&gt;&lt;br/&gt;Tea42: Yes, tagging/labelling is necessary to identify the exact code that&#039;s running in prod.  But IMO you need a branch so you can only release production bugfixes and enhancements and not mainline development as well.</description> <content:encoded><![CDATA[<p>Douglas, Jon. Thanks for your comments.  I think I want to do a longer post on this topic.</p><p>Tea42: Yes, tagging/labelling is necessary to identify the exact code that&#8217;s running in prod.  But IMO you need a branch so you can only release production bugfixes and enhancements and not mainline development as well.</p> ]]></content:encoded> </item> <item><title>By: tea42</title><link>http://www.build-doctor.com/2008/09/10/branching-do-it-like-this-and-nobody-gets-hurt/comment-page-1/#comment-215</link> <dc:creator>tea42</dc:creator> <pubDate>Fri, 12 Sep 2008 05:29:00 +0000</pubDate> <guid
isPermaLink="false">http://beta.build-doctor.com/?p=99#comment-215</guid> <description>Branches? Unless its a transitional release (rc1, rc2, etc.) shouldn&#039;t you be releasing tags?</description> <content:encoded><![CDATA[<p>Branches? Unless its a transitional release (rc1, rc2, etc.) shouldn&#8217;t you be releasing tags?</p> ]]></content:encoded> </item> <item><title>By: Jon</title><link>http://www.build-doctor.com/2008/09/10/branching-do-it-like-this-and-nobody-gets-hurt/comment-page-1/#comment-214</link> <dc:creator>Jon</dc:creator> <pubDate>Thu, 11 Sep 2008 08:47:00 +0000</pubDate> <guid
isPermaLink="false">http://beta.build-doctor.com/?p=99#comment-214</guid> <description>I totally agree! KISS rule goes a long way here.&lt;br/&gt;I wrote a little bit of ant/shell to handle automatic svn tagging based on whether a build was run against trunk or a branch.&lt;br/&gt;&lt;br/&gt;I can&#039;t post the antscript here (blogger paranoia!), but suffices to say it&#039;s pretty noddy. Just passes in the ${label} and ${checkoutdir} for the build.&lt;br/&gt;&lt;br/&gt;The bash bit:&lt;br/&gt;#!/bin/bash&lt;br/&gt;&lt;br/&gt;# Expects to be called by the tag.xml antscript. Needs to be told the working copy it&#039;s tagging from and the label to tag with.&lt;br/&gt;&lt;br/&gt;checkoutDir=$1&lt;br/&gt;label=$2&lt;br/&gt;svn_revision=`svn info ./${checkoutDir}&#124;grep &quot;Revision:&quot;&#124;awk &#039;{print $2}&#039;`&lt;br/&gt;svn_url=`svn info ./${checkoutDir}&#124;grep &quot;URL:&quot;&#124;awk &#039;{print $2}&#039;`&lt;br/&gt;echo ${svn_url} &#124;grep trunk &gt; /dev/null 2&gt;&amp;1&lt;br/&gt;if [ $? -eq 0 ]&lt;br/&gt;then&lt;br/&gt; svn_tag_url=${svn_url/trunk/tags}/trunk/&lt;br/&gt;else&lt;br/&gt; svn_tag_url=${svn_url/branches/tags}&lt;br/&gt;fi&lt;br/&gt;&lt;br/&gt;echo &quot;svn autotagging ${svn_url} at revision ${svn_revision} for build ${label}...&quot;&lt;br/&gt;svn copy -r ${svn_revision} ${svn_url}/ ${svn_tag_url}/${label}/ -m &quot;cruise: Autotagging for build ${label}(Revision: ${svn_revision}).&quot;&lt;br/&gt;echo &quot;svn autotagging complete.&quot;&lt;br/&gt;&lt;br/&gt;I&#039;m sure there&#039;s a more elegant way to do it though :)</description> <content:encoded><![CDATA[<p>I totally agree! KISS rule goes a long way here.<br
/>I wrote a little bit of ant/shell to handle automatic svn tagging based on whether a build was run against trunk or a branch.</p><p>I can&#39;t post the antscript here (blogger paranoia!), but suffices to say it&#39;s pretty noddy. Just passes in the ${label} and ${checkoutdir} for the build.</p><p>The bash bit:<br
/>#!/bin/bash</p><p># Expects to be called by the tag.xml antscript. Needs to be told the working copy it&#39;s tagging from and the label to tag with.</p><p>checkoutDir=$1<br
/>label=$2<br
/>svn_revision=`svn info ./${checkoutDir}|grep &quot;Revision:&quot;|awk &#39;{print $2}&#39;`<br
/>svn_url=`svn info ./${checkoutDir}|grep &quot;URL:&quot;|awk &#39;{print $2}&#39;`<br
/>echo ${svn_url} |grep trunk &gt; /dev/null 2&gt;&amp;1<br
/>if [ $? -eq 0 ]<br
/>then<br
/> svn_tag_url=${svn_url/trunk/tags}/trunk/<br
/>else<br
/> svn_tag_url=${svn_url/branches/tags}<br
/>fi</p><p>echo &quot;svn autotagging ${svn_url} at revision ${svn_revision} for build ${label}&#8230;&quot;<br
/>svn copy -r ${svn_revision} ${svn_url}/ ${svn_tag_url}/${label}/ -m &quot;cruise: Autotagging for build ${label}(Revision: ${svn_revision}).&quot;<br
/>echo &quot;svn autotagging complete.&quot;</p><p>I&#39;m sure there&#39;s a more elegant way to do it though <img
src='http://www.build-doctor.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p> ]]></content:encoded> </item> <item><title>By: Douglas Squirrel</title><link>http://www.build-doctor.com/2008/09/10/branching-do-it-like-this-and-nobody-gets-hurt/comment-page-1/#comment-213</link> <dc:creator>Douglas Squirrel</dc:creator> <pubDate>Wed, 10 Sep 2008 23:50:00 +0000</pubDate> <guid
isPermaLink="false">http://beta.build-doctor.com/?p=99#comment-213</guid> <description>We&#039;re at most one release ahead of production, so we just have HEAD and the immediately prior release to run tests on; one of our projects releases frequently enough that we don&#039;t even have to branch it at all normally. The three projects share a server farm, with several CruiseControl instances running different types of tests for each in rotation, so we&#039;ve just inserted the branches as new projects in the rotation. &lt;br/&gt;&lt;br/&gt;Since changes to the branches are rare, other projects don&#039;t often have to wait for the branches. Since changes are well-vetted, we don&#039;t run branched code through all the steps in the build pipeline, just the ones that are most critical (we skip browser-compatibility tests for example, since we rarely make substantial HTML changes in branches).</description> <content:encoded><![CDATA[<p>We&#8217;re at most one release ahead of production, so we just have HEAD and the immediately prior release to run tests on; one of our projects releases frequently enough that we don&#8217;t even have to branch it at all normally. The three projects share a server farm, with several CruiseControl instances running different types of tests for each in rotation, so we&#8217;ve just inserted the branches as new projects in the rotation.</p><p>Since changes to the branches are rare, other projects don&#8217;t often have to wait for the branches. Since changes are well-vetted, we don&#8217;t run branched code through all the steps in the build pipeline, just the ones that are most critical (we skip browser-compatibility tests for example, since we rarely make substantial HTML changes in branches).</p> ]]></content:encoded> </item> </channel> </rss>
