<?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: How to manage trunk/branches/tags in the project while bug fixing and regular development?</title>
	<atom:link href="http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/</link>
	<description>Jarosław Dobrzański's technical blog</description>
	<lastBuildDate>Sun, 07 Mar 2010 03:39:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: dyd</title>
		<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/comment-page-1/#comment-28497</link>
		<dc:creator>dyd</dc:creator>
		<pubDate>Mon, 04 Jan 2010 17:37:21 +0000</pubDate>
		<guid isPermaLink="false">http://dobrzanski.net/?p=300#comment-28497</guid>
		<description>What about Compact Framework? I&#039;m facing the same issue and custom cert policy is not solving the issue?</description>
		<content:encoded><![CDATA[<p>What about Compact Framework? I&#8217;m facing the same issue and custom cert policy is not solving the issue?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jarosław Dobrzański</title>
		<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/comment-page-1/#comment-19198</link>
		<dc:creator>Jarosław Dobrzański</dc:creator>
		<pubDate>Sun, 14 Jun 2009 17:10:34 +0000</pubDate>
		<guid isPermaLink="false">http://dobrzanski.net/?p=300#comment-19198</guid>
		<description>John,

Thanks for your input too!

Jarek</description>
		<content:encoded><![CDATA[<p>John,</p>
<p>Thanks for your input too!</p>
<p>Jarek</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alan</title>
		<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/comment-page-1/#comment-18820</link>
		<dc:creator>Alan</dc:creator>
		<pubDate>Wed, 03 Jun 2009 01:13:14 +0000</pubDate>
		<guid isPermaLink="false">http://dobrzanski.net/?p=300#comment-18820</guid>
		<description>There is one distinct advantage to merging each commit to both the bug branch(es) and the feature branch(es) at the time of the commit (several small merges):

That way the merge is the responsibility of the developer who knows the fix, and (hopefully) has better understanding of how to deal with conflicts on the other branches.

OTOH - that advantage is more relevant when the person building is not familiar with the code. Which (I guess) is more a corporate scenario.</description>
		<content:encoded><![CDATA[<p>There is one distinct advantage to merging each commit to both the bug branch(es) and the feature branch(es) at the time of the commit (several small merges):</p>
<p>That way the merge is the responsibility of the developer who knows the fix, and (hopefully) has better understanding of how to deal with conflicts on the other branches.</p>
<p>OTOH &#8211; that advantage is more relevant when the person building is not familiar with the code. Which (I guess) is more a corporate scenario.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/comment-page-1/#comment-18815</link>
		<dc:creator>John</dc:creator>
		<pubDate>Tue, 02 Jun 2009 23:01:52 +0000</pubDate>
		<guid isPermaLink="false">http://dobrzanski.net/?p=300#comment-18815</guid>
		<description>Jarosław,

   Your process definitely works. I&#039;ve had to take on a release manager role for several years (until we can hire a dedicated RM), and I&#039;ve found a lot of release management is just common sense. The hard part is making sure the execution is right.

   I&#039;ve found it helpful to try to minimize the # of branches you need to maintain. No matter which version control system you use, merging is always tricky. In the case where you have to work on a new feature that should not go for several releases, it might be worthwhile to code things in such a way you can turn on the feature in development, but disable it in QA and production.</description>
		<content:encoded><![CDATA[<p>Jarosław,</p>
<p>   Your process definitely works. I&#8217;ve had to take on a release manager role for several years (until we can hire a dedicated RM), and I&#8217;ve found a lot of release management is just common sense. The hard part is making sure the execution is right.</p>
<p>   I&#8217;ve found it helpful to try to minimize the # of branches you need to maintain. No matter which version control system you use, merging is always tricky. In the case where you have to work on a new feature that should not go for several releases, it might be worthwhile to code things in such a way you can turn on the feature in development, but disable it in QA and production.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg</title>
		<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/comment-page-1/#comment-18808</link>
		<dc:creator>Greg</dc:creator>
		<pubDate>Tue, 02 Jun 2009 20:08:57 +0000</pubDate>
		<guid isPermaLink="false">http://dobrzanski.net/?p=300#comment-18808</guid>
		<description>Jarosław: you&#039;re quite welcome, that presentation is one of the clearest things I&#039;ve read about branching in version control and helped me clarify a lot of my thinking about how to do it &quot;correctly.&quot;</description>
		<content:encoded><![CDATA[<p>Jarosław: you&#8217;re quite welcome, that presentation is one of the clearest things I&#8217;ve read about branching in version control and helped me clarify a lot of my thinking about how to do it &#8220;correctly.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Baczek</title>
		<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/comment-page-1/#comment-18806</link>
		<dc:creator>Baczek</dc:creator>
		<pubDate>Tue, 02 Jun 2009 19:53:13 +0000</pubDate>
		<guid isPermaLink="false">http://dobrzanski.net/?p=300#comment-18806</guid>
		<description>you _really_ need a dvcs. try mercurial or git.</description>
		<content:encoded><![CDATA[<p>you _really_ need a dvcs. try mercurial or git.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jarosław Dobrzański</title>
		<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/comment-page-1/#comment-18802</link>
		<dc:creator>Jarosław Dobrzański</dc:creator>
		<pubDate>Tue, 02 Jun 2009 18:45:15 +0000</pubDate>
		<guid isPermaLink="false">http://dobrzanski.net/?p=300#comment-18802</guid>
		<description>Greg, thanks for the presentation!</description>
		<content:encoded><![CDATA[<p>Greg, thanks for the presentation!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jarosław Dobrzański</title>
		<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/comment-page-1/#comment-18801</link>
		<dc:creator>Jarosław Dobrzański</dc:creator>
		<pubDate>Tue, 02 Jun 2009 18:41:06 +0000</pubDate>
		<guid isPermaLink="false">http://dobrzanski.net/?p=300#comment-18801</guid>
		<description>John,

Thanks for useful scenarios!

The former is indeed complicated :)

Let&#039;s focus on the latter, which I deal with from time to time...

&lt;blockquote&gt;What about a scenario when you have already cut a ?soon to be released? branch, but you get a request to make an ?emergency fix? in the previous release?[...]&lt;/blockquote&gt;
How I handle this is similar to what you have described:
&lt;ul&gt;
	&lt;li&gt;I switch to the branch with the release which is currently LIVE and make a fix there&lt;/li&gt;
	&lt;li&gt;When the patch is ready I create a new tag as a snapshot of the system with this patch and push the patch LIVE&lt;/li&gt;
	&lt;li&gt;Finally I switch back to the trunk (or the current branch) and merge it with the changes made for purpose of the fix&lt;/li&gt;
&lt;/ul&gt;

As you said the approach suggested by my is helpful there.

Answering your question, at a point in time trunk is current development branch, and in Subversion there are branches names ReleaseX (past releases). Also whenever something is pushed LIVE (a full build or a patch with some fixes) I create a tag so that I can easily check out the same code that is/was running LIVE.
Does it answer your question?

Cheers,
Jarek</description>
		<content:encoded><![CDATA[<p>John,</p>
<p>Thanks for useful scenarios!</p>
<p>The former is indeed complicated <img src='http://dobrzanski.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Let&#8217;s focus on the latter, which I deal with from time to time&#8230;</p>
<blockquote><p>What about a scenario when you have already cut a ?soon to be released? branch, but you get a request to make an ?emergency fix? in the previous release?[...]</p></blockquote>
<p>How I handle this is similar to what you have described:</p>
<ul>
<li>I switch to the branch with the release which is currently LIVE and make a fix there</li>
<li>When the patch is ready I create a new tag as a snapshot of the system with this patch and push the patch LIVE</li>
<li>Finally I switch back to the trunk (or the current branch) and merge it with the changes made for purpose of the fix</li>
</ul>
<p>As you said the approach suggested by my is helpful there.</p>
<p>Answering your question, at a point in time trunk is current development branch, and in Subversion there are branches names ReleaseX (past releases). Also whenever something is pushed LIVE (a full build or a patch with some fixes) I create a tag so that I can easily check out the same code that is/was running LIVE.<br />
Does it answer your question?</p>
<p>Cheers,<br />
Jarek</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/comment-page-1/#comment-18799</link>
		<dc:creator>John</dc:creator>
		<pubDate>Tue, 02 Jun 2009 18:26:06 +0000</pubDate>
		<guid isPermaLink="false">http://dobrzanski.net/?p=300#comment-18799</guid>
		<description>Sounds good. I don&#039;t think you have to worry about there being a &quot;better&quot; method. 

Just be aware that you will want to modify this approach in other scenarios.

This works when one group is working on the &quot;bug fix&quot; branch and one group is working on the &quot;next release&quot; branch. What happens if you have a third group that is making changes for a much later release? In this case, you will probably want to create a separate branch for long term changes. Now you have two different branches and the trunk - it probably will happen to your project. Merging code can be even more challenging when this happens. So be prepared for that.

What about a scenario when you have already cut a &quot;soon to be released&quot; branch, but you get a request to make an &quot;emergency fix&quot; in the previous release? In this scenario, your team need to go back to the previous branch, fix the bugs in there and deploy that release. But you also need to merge those fixes back in to the trunk AND you need to merge those fixes to your &quot;soon to be released&quot; branch. Your setup will work fine for this scenario, just be prepared for it.

This may be out of scope of what you had in mind. You have a bug fix branch and the main line (the next release). Does that mean you have two different environments so that QA can test the bug fix version and the next release separately?</description>
		<content:encoded><![CDATA[<p>Sounds good. I don&#8217;t think you have to worry about there being a &#8220;better&#8221; method. </p>
<p>Just be aware that you will want to modify this approach in other scenarios.</p>
<p>This works when one group is working on the &#8220;bug fix&#8221; branch and one group is working on the &#8220;next release&#8221; branch. What happens if you have a third group that is making changes for a much later release? In this case, you will probably want to create a separate branch for long term changes. Now you have two different branches and the trunk &#8211; it probably will happen to your project. Merging code can be even more challenging when this happens. So be prepared for that.</p>
<p>What about a scenario when you have already cut a &#8220;soon to be released&#8221; branch, but you get a request to make an &#8220;emergency fix&#8221; in the previous release? In this scenario, your team need to go back to the previous branch, fix the bugs in there and deploy that release. But you also need to merge those fixes back in to the trunk AND you need to merge those fixes to your &#8220;soon to be released&#8221; branch. Your setup will work fine for this scenario, just be prepared for it.</p>
<p>This may be out of scope of what you had in mind. You have a bug fix branch and the main line (the next release). Does that mean you have two different environments so that QA can test the bug fix version and the next release separately?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Clóvis Valadares Jr</title>
		<link>http://dobrzanski.net/2009/04/03/how-to-manage-trunkbranchestags-in-the-project-while-bug-fixing-and-regular-development/comment-page-1/#comment-18797</link>
		<dc:creator>Clóvis Valadares Jr</dc:creator>
		<pubDate>Tue, 02 Jun 2009 18:12:44 +0000</pubDate>
		<guid isPermaLink="false">http://dobrzanski.net/?p=300#comment-18797</guid>
		<description>Seems to me that you don&#039;t use git. A &#039;git rebase&#039; should work very well for you.</description>
		<content:encoded><![CDATA[<p>Seems to me that you don&#8217;t use git. A &#8216;git rebase&#8217; should work very well for you.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
