<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://daptivate.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Subversion Best Practices for Web Applications</title><link>http://daptivate.com/archive/2008/08/28/subversion-best-practices-for-web-applications.aspx</link><description>A few months back I had some dialogue with Nick Parker from uship.com.&amp;#160; He was wrestling with getting version control setup in a way that would meet the needs of his team and wanted to brainstorm a bit.&amp;#160; Here is a portion of our discussion that</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>re: Subversion Best Practices for Web Applications</title><link>http://daptivate.com/archive/2008/08/28/subversion-best-practices-for-web-applications.aspx#1858</link><pubDate>Thu, 28 Aug 2008 20:32:39 GMT</pubDate><guid isPermaLink="false">f0cfdaa5-25b1-4b7d-b7d3-40a26cc40c63:1858</guid><dc:creator>Nick Parker</dc:creator><description>&lt;p&gt;CruiseControl builds the binaries using msbuild - binaries that aren't built from the project are checked in.&lt;/p&gt;
&lt;img src="http://daptivate.com/aggbug.aspx?PostID=1858" width="1" height="1"&gt;</description></item><item><title>re: Subversion Best Practices for Web Applications</title><link>http://daptivate.com/archive/2008/08/28/subversion-best-practices-for-web-applications.aspx#1857</link><pubDate>Thu, 28 Aug 2008 19:27:08 GMT</pubDate><guid isPermaLink="false">f0cfdaa5-25b1-4b7d-b7d3-40a26cc40c63:1857</guid><dc:creator>Kyle</dc:creator><description>&lt;p&gt;Nice! &amp;nbsp;I really like how you are using CruiseControl to automate everything.&lt;/p&gt;
&lt;p&gt;One question: How do you handle binaries? &amp;nbsp;Do you check them in, rely on CruiseControl to build them, have CruiseControl check them in, other?&lt;/p&gt;
&lt;img src="http://daptivate.com/aggbug.aspx?PostID=1857" width="1" height="1"&gt;</description></item><item><title>re: Subversion Best Practices for Web Applications</title><link>http://daptivate.com/archive/2008/08/28/subversion-best-practices-for-web-applications.aspx#1856</link><pubDate>Thu, 28 Aug 2008 16:47:53 GMT</pubDate><guid isPermaLink="false">f0cfdaa5-25b1-4b7d-b7d3-40a26cc40c63:1856</guid><dc:creator>Nick Parker</dc:creator><description>&lt;p&gt;Kyle,&lt;/p&gt;
&lt;p&gt; &amp;nbsp;Thanks for the great post ideas that have lef to our current build process. &amp;nbsp;Below is what we're now using:&lt;/p&gt;
&lt;p&gt;We have our trunk, and two branches - test and staging.&lt;/p&gt;
&lt;p&gt;Developers regularly check into trunk, which fires off an automatic build of our development site using CruiseControl.net (&lt;a rel="nofollow" target="_new" href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET"&gt;confluence.public.thoughtworks.org/.../Welcome+to+CruiseControl.NET&lt;/a&gt;). &amp;nbsp;From there I can automatically merge all changes from trunk into the test branch, which fires off an automated build of our test site, or I can manually merge changes into the test branch and force a build of the test site (this is used for patches). &amp;nbsp;When that's been tested and is ready for primetime, CruiseControl automatically controls the merge into the staging branch, which builds our staging site in the production environment. &amp;nbsp;From there, we use vice-versa to only update / add / delete new or changed files to production.&lt;/p&gt;
&lt;p&gt;So the most common steps to push a new release are:&lt;/p&gt;
&lt;p&gt;1.) Force cc to merge trunk into test branch&lt;/p&gt;
&lt;p&gt;2.) Test everything on test&lt;/p&gt;
&lt;p&gt;3.) Force cc to merge test into staging branch, tag revision&lt;/p&gt;
&lt;p&gt;4.) Final testing on staging (in production environment)&lt;/p&gt;
&lt;p&gt;5.) Vice versa between staging and production&lt;/p&gt;
&lt;p&gt;The nice thing there is that we have a few loadbalanced servers, and vice-versa can update whichever servers we want all at the same time, and also will remove files that are no longer in use.&lt;/p&gt;
&lt;p&gt;Nick&lt;/p&gt;
&lt;img src="http://daptivate.com/aggbug.aspx?PostID=1856" width="1" height="1"&gt;</description></item></channel></rss>