<?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: Every commit a mini-release</title>
	<atom:link href="http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/feed/" rel="self" type="application/rss+xml" />
	<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/</link>
	<description>baking cakes with CakePHP</description>
	<lastBuildDate>Thu, 09 Sep 2010 06:34:11 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: cakebaker</title>
		<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/comment-page-1/#comment-36191</link>
		<dc:creator>cakebaker</dc:creator>
		<pubDate>Thu, 22 Nov 2007 07:50:18 +0000</pubDate>
		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/#comment-36191</guid>
		<description>@John: What I wrote here is about committing code in general, and I think the way you work should be the same whether you deal with a development branch or the trunk. So if it is not ok to commit buggy code to the trunk, why should it then be ok if you do the same on the development branch? 

And I don&#039;t see it as a really strict working policy if you say: &quot;Only commit stuff that works&quot;.</description>
		<content:encoded><![CDATA[<p>@John: What I wrote here is about committing code in general, and I think the way you work should be the same whether you deal with a development branch or the trunk. So if it is not ok to commit buggy code to the trunk, why should it then be ok if you do the same on the development branch? </p>
<p>And I don&#8217;t see it as a really strict working policy if you say: &#8220;Only commit stuff that works&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/comment-page-1/#comment-36031</link>
		<dc:creator>John</dc:creator>
		<pubDate>Wed, 21 Nov 2007 19:56:58 +0000</pubDate>
		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/#comment-36031</guid>
		<description>I suppose i just disagree with it. It doesn&#039;t make much sense to keep really strict working policies on development branches. That&#039;s pretty much the entire point of a branch. 

If you&#039;re talking about trunk, I&#039;m with you. Otherwise, I don&#039;t really see your point.</description>
		<content:encoded><![CDATA[<p>I suppose i just disagree with it. It doesn&#8217;t make much sense to keep really strict working policies on development branches. That&#8217;s pretty much the entire point of a branch. </p>
<p>If you&#8217;re talking about trunk, I&#8217;m with you. Otherwise, I don&#8217;t really see your point.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cakebaker</title>
		<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/comment-page-1/#comment-36027</link>
		<dc:creator>cakebaker</dc:creator>
		<pubDate>Wed, 21 Nov 2007 19:34:08 +0000</pubDate>
		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/#comment-36027</guid>
		<description>@all: Thanks for your comments!

@Zonium, Repsah: I think I was a bit imprecise with the term &quot;incomplete&quot; as there are two different cases. On the one hand there are the &quot;good&quot; cases, e.g. committing a form together with an empty action. Even though this feature is incomplete, it doesn&#039;t break anything. On the other hand there are the &quot;bad&quot; cases which break stuff, e.g. renaming a method and committing this change, without adapting and committing the code which uses this method. 

But if there are tests around, then I think they should pass before you commit your code as it is annoying to have a red bar ;-)  And it shouldn&#039;t take you long to make them pass if you move forward with small steps anyway. 

I agree with you that you shouldn&#039;t defer a commit for too long (I experienced the negative effect of this more than once myself *g*). I think the motto &quot;release early, release often&quot; also applies for commits.

@Ben: Thanks, you bring it on the point :)

@Brendon: Sure, it is my own decision to use the latest code and I am aware that I am using an unstable version. But &quot;unstable&quot; means for me that things may change and are not yet finalized, but not that it is buggy by intention.

I agree with you that every team/person has its own way to work, and what works for some, may not work for others. That&#039;s ok. On the other hand nobody is perfect, so there is always room to become better. This article may be an inspiration for you to question your own way of committing stuff. I don&#039;t expect everyone will now start using this approach ;-)

@Jeff: Thanks for sharing this link!

@Eelco: Well, I think it makes sense to follow the same approach when working alone so that it becomes a habit.

@brandon: That makes sense. A similar approach was used in a company I worked in the past. There were also three stages (dev, staging, live), but only one branch was used for the dev site. If you wanted to put something to the staging server you simply exported the code from the dev branch. And to go live the code was copied from the staging server. This worked fine at that time and you didn&#039;t have to care about merging ;-)

@John: Well, this article is meant as feedback on how the commit process could be improved. And yes, it is written from my perspective: I described what I think the problem is, and I described what I think could be done to avoid it. Now it is up to you what you do with it ;-)</description>
		<content:encoded><![CDATA[<p>@all: Thanks for your comments!</p>
<p>@Zonium, Repsah: I think I was a bit imprecise with the term &#8220;incomplete&#8221; as there are two different cases. On the one hand there are the &#8220;good&#8221; cases, e.g. committing a form together with an empty action. Even though this feature is incomplete, it doesn&#8217;t break anything. On the other hand there are the &#8220;bad&#8221; cases which break stuff, e.g. renaming a method and committing this change, without adapting and committing the code which uses this method. </p>
<p>But if there are tests around, then I think they should pass before you commit your code as it is annoying to have a red bar ;-)  And it shouldn&#8217;t take you long to make them pass if you move forward with small steps anyway. </p>
<p>I agree with you that you shouldn&#8217;t defer a commit for too long (I experienced the negative effect of this more than once myself *g*). I think the motto &#8220;release early, release often&#8221; also applies for commits.</p>
<p>@Ben: Thanks, you bring it on the point :)</p>
<p>@Brendon: Sure, it is my own decision to use the latest code and I am aware that I am using an unstable version. But &#8220;unstable&#8221; means for me that things may change and are not yet finalized, but not that it is buggy by intention.</p>
<p>I agree with you that every team/person has its own way to work, and what works for some, may not work for others. That&#8217;s ok. On the other hand nobody is perfect, so there is always room to become better. This article may be an inspiration for you to question your own way of committing stuff. I don&#8217;t expect everyone will now start using this approach ;-)</p>
<p>@Jeff: Thanks for sharing this link!</p>
<p>@Eelco: Well, I think it makes sense to follow the same approach when working alone so that it becomes a habit.</p>
<p>@brandon: That makes sense. A similar approach was used in a company I worked in the past. There were also three stages (dev, staging, live), but only one branch was used for the dev site. If you wanted to put something to the staging server you simply exported the code from the dev branch. And to go live the code was copied from the staging server. This worked fine at that time and you didn&#8217;t have to care about merging ;-)</p>
<p>@John: Well, this article is meant as feedback on how the commit process could be improved. And yes, it is written from my perspective: I described what I think the problem is, and I described what I think could be done to avoid it. Now it is up to you what you do with it ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/comment-page-1/#comment-35938</link>
		<dc:creator>John</dc:creator>
		<pubDate>Wed, 21 Nov 2007 14:38:59 +0000</pubDate>
		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/#comment-35938</guid>
		<description>@Brandon: No, the comment was directed at the author. It seems like this post tries to create criticism out of nothing.

Essentially, it boils down to &quot;it wasn&#039;t done my way.&quot;</description>
		<content:encoded><![CDATA[<p>@Brandon: No, the comment was directed at the author. It seems like this post tries to create criticism out of nothing.</p>
<p>Essentially, it boils down to &#8220;it wasn&#8217;t done my way.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brendon Kozlowski</title>
		<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/comment-page-1/#comment-35685</link>
		<dc:creator>Brendon Kozlowski</dc:creator>
		<pubDate>Tue, 20 Nov 2007 20:41:52 +0000</pubDate>
		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/#comment-35685</guid>
		<description>@John:  If you were commenting to me, I don&#039;t see how that&#039;s grasping at straws.  An axe was designed for chopping wood, but if someone uses it to chop up ice, is it necessarily wrong?  I was commenting over how different people/teams/groups use similar tools differently to achieve the same goal.</description>
		<content:encoded><![CDATA[<p>@John:  If you were commenting to me, I don&#8217;t see how that&#8217;s grasping at straws.  An axe was designed for chopping wood, but if someone uses it to chop up ice, is it necessarily wrong?  I was commenting over how different people/teams/groups use similar tools differently to achieve the same goal.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: brandon</title>
		<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/comment-page-1/#comment-35656</link>
		<dc:creator>brandon</dc:creator>
		<pubDate>Tue, 20 Nov 2007 18:29:13 +0000</pubDate>
		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/#comment-35656</guid>
		<description>With our projects we use the following SVN setup because of the growing # of partial/incomplete commits.

We have both a live site and a live-dev site.  The live is checkout&#039;ed to the trunk and the live-dev is a checkout of the ./branches/dev (www.site.com and dev.site.com respectively).

Obviously committing partial or incomplete code to the dev branch could render our live-dev site useless.  So on each of our local devs we use the &quot;private branch&quot;.  Our flow goes:

Private Branch -&gt; Public Branch -&gt; Public Trunk

Only the devs have access to RW on the private branch.  We add specific keywords to commit messages so the other developers always know what they are and which revisions  need merged:

- Critical / Bug Fix (almost always immediately merged)
- Enhancement
- Partial (never merged by itself)
- Complete Partial [partial revs list]
- etc..

After they are in the public branch for 1 week then they are set to be merged to the public trunk.  (Each commit goes through a 1 week &quot;test&quot; period)

FYI, don&#039;t try to manage SVN merges by yourself. There are many tools out there (svnmerge, etc) that help with managing these.</description>
		<content:encoded><![CDATA[<p>With our projects we use the following SVN setup because of the growing # of partial/incomplete commits.</p>
<p>We have both a live site and a live-dev site.  The live is checkout&#8217;ed to the trunk and the live-dev is a checkout of the ./branches/dev (www.site.com and dev.site.com respectively).</p>
<p>Obviously committing partial or incomplete code to the dev branch could render our live-dev site useless.  So on each of our local devs we use the &#8220;private branch&#8221;.  Our flow goes:</p>
<p>Private Branch -&gt; Public Branch -&gt; Public Trunk</p>
<p>Only the devs have access to RW on the private branch.  We add specific keywords to commit messages so the other developers always know what they are and which revisions  need merged:</p>
<p>- Critical / Bug Fix (almost always immediately merged)<br />
- Enhancement<br />
- Partial (never merged by itself)<br />
- Complete Partial [partial revs list]<br />
- etc..</p>
<p>After they are in the public branch for 1 week then they are set to be merged to the public trunk.  (Each commit goes through a 1 week &#8220;test&#8221; period)</p>
<p>FYI, don&#8217;t try to manage SVN merges by yourself. There are many tools out there (svnmerge, etc) that help with managing these.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eelco Wiersma</title>
		<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/comment-page-1/#comment-35652</link>
		<dc:creator>Eelco Wiersma</dc:creator>
		<pubDate>Tue, 20 Nov 2007 18:14:56 +0000</pubDate>
		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/#comment-35652</guid>
		<description>I&#039;m also working similar to your approach when working with multiple developers. I usually commit when a specific ticket is completed and works. It can be frustrating for your colleagues if their running app is broken when they update your partitial completed code..
 
When I&#039;m the only one working on a project it doesn&#039;t really matter.</description>
		<content:encoded><![CDATA[<p>I&#8217;m also working similar to your approach when working with multiple developers. I usually commit when a specific ticket is completed and works. It can be frustrating for your colleagues if their running app is broken when they update your partitial completed code..</p>
<p>When I&#8217;m the only one working on a project it doesn&#8217;t really matter.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Loiselle</title>
		<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/comment-page-1/#comment-35639</link>
		<dc:creator>Jeff Loiselle</dc:creator>
		<pubDate>Tue, 20 Nov 2007 17:13:39 +0000</pubDate>
		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/#comment-35639</guid>
		<description>This is the blog entry I&#039;ve been using to guide my source control efforts for the past year.

http://netevil.org/blog/2006/dec/coding-for-source-control</description>
		<content:encoded><![CDATA[<p>This is the blog entry I&#8217;ve been using to guide my source control efforts for the past year.</p>
<p><a href="http://netevil.org/blog/2006/dec/coding-for-source-control" rel="nofollow">http://netevil.org/blog/2006/dec/coding-for-source-control</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/comment-page-1/#comment-35633</link>
		<dc:creator>John</dc:creator>
		<pubDate>Tue, 20 Nov 2007 16:58:40 +0000</pubDate>
		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/#comment-35633</guid>
		<description>It&#039;s my understanding that&#039;s what branches was *made for*.

Seems like you&#039;re grasping at straws here... ?</description>
		<content:encoded><![CDATA[<p>It&#8217;s my understanding that&#8217;s what branches was *made for*.</p>
<p>Seems like you&#8217;re grasping at straws here&#8230; ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brendon Kozlowski</title>
		<link>http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/comment-page-1/#comment-35630</link>
		<dc:creator>Brendon Kozlowski</dc:creator>
		<pubDate>Tue, 20 Nov 2007 16:45:36 +0000</pubDate>
		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/11/20/every-commit-a-mini-release/#comment-35630</guid>
		<description>I believe that many of you are missing one hugely important factor...  Downloading and using any source that is not listed as &quot;stable&quot; is your own decision, and should not be expected to always work 100% of the time (which is why Dan and others posted bug reports that were understandably closed).  

The thing here, is that many teams work in many different ways.  To expect one team to always work like another is irresponsible.  Certain teams work better one way, others another.  If there were two branches - a developer and public, perhaps it would be helpful, but then...you&#039;d need to commit time and resources to keeping the public branch updated - time that could otherwise be spent on the code itself.

I think in the case of CakePHP, the way they&#039;re going about it is probably the fastest and best possible solution.  If you want to be bleeding edge with the source, you&#039;ll have to deal with a few (or more) stumbling roadblocks.  :)</description>
		<content:encoded><![CDATA[<p>I believe that many of you are missing one hugely important factor&#8230;  Downloading and using any source that is not listed as &#8220;stable&#8221; is your own decision, and should not be expected to always work 100% of the time (which is why Dan and others posted bug reports that were understandably closed).  </p>
<p>The thing here, is that many teams work in many different ways.  To expect one team to always work like another is irresponsible.  Certain teams work better one way, others another.  If there were two branches &#8211; a developer and public, perhaps it would be helpful, but then&#8230;you&#8217;d need to commit time and resources to keeping the public branch updated &#8211; time that could otherwise be spent on the code itself.</p>
<p>I think in the case of CakePHP, the way they&#8217;re going about it is probably the fastest and best possible solution.  If you want to be bleeding edge with the source, you&#8217;ll have to deal with a few (or more) stumbling roadblocks.  :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
