<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Configuration Management and Agile Software Development &#187; change packages</title>
	<atom:link href="http://accurev.com/blog/tag/change-packages/feed/" rel="self" type="application/rss+xml" />
	<link>http://accurev.com/blog</link>
	<description>SCM and Agile Software Development Blog</description>
	<lastBuildDate>Thu, 17 May 2012 15:00:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Quick Tips on Branching Patterns from an Expert</title>
		<link>http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/</link>
		<comments>http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 17:56:53 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[change packages]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[branching]]></category>
		<category><![CDATA[branching pattern]]></category>
		<category><![CDATA[change sets]]></category>
		<category><![CDATA[distributed teams]]></category>
		<category><![CDATA[merging]]></category>
		<category><![CDATA[software development process]]></category>

		<guid isPermaLink="false">http://accurev.com/blog/?p=3017</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/' addthis:title='Quick Tips on Branching Patterns from an Expert ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>The goals of a branching pattern should always to be to manage a software team’s development process and to make this process as easy and straight-forward as possible. With this process, the team should be able to complete all of the things that need to happen in order to release a piece of software. So [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/' addthis:title='Quick Tips on Branching Patterns from an Expert '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/' addthis:title='Quick Tips on Branching Patterns from an Expert ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p><strong><em>The goals of a branching pattern should always to be to manage a software team’s development process and to make this process as easy and straight-forward as possible. </em></strong>With this process, the team should be able to complete all of the things that need to happen in order to release a piece of software. So how you establish this pattern?</p>
<h2><strong>Make Merging Changes Easy and Straight-forward</strong></h2>
<p><a href="http://accurev.com/blog/wp-content/uploads/2012/02/Whiteboard.jpg"><img class=" wp-image-3018 alignright" title="Typically someone from the team will draw the branching pattern on the whiteboard" src="http://accurev.com/blog/wp-content/uploads/2012/02/Whiteboard.jpg" alt="Whiteboard Quick Tips on Branching Patterns from an Expert" width="275" height="203" /></a>The funny thing about branching patterns is that we often attempt to create a process, but have a hard time following it. Typically someone from the team will draw the branching pattern on the whiteboard, and even go as far to take a picture of it with a phone to send around to teams.</p>
<p>Unfortunately this process doesn’t scale well when development teams have more than a few people. Change management on the whiteboard isn’t an effective system for ensuring the success of a software release.</p>
<p>Branching patterns should be able to support the development process, and mirror the natural flow of the development team as they work towards a release.</p>
<p>To achieve this, we might want to think of branches as a process management tool, not just a place to put a specific release, patch or development build.  Promotional branching patterns allow for different “states” of code, which is hugely powerful when working through the development cycle. This is a huge topic that is part of larger conversation. To find out more about promotional branching and merging patterns check “<a href="http://www.accurev.com/whitepaper/guide-branching-merging-patterns">A Guide to Branching and Merging Patterns</a>.”</p>
<h2><strong>Provide Private Areas for Teams to Check-in and Integrate</strong></h2>
<p>Committing early and often is an SCM best practice. Over the years, developers have been told “If it’s not in source control, it never happened.” To avoid this philosophy, teams may require people to check code in everyday so work isn’t lost.</p>
<p>In a practical branching pattern, teams and developers create both private workspaces and branches, allowing them to create builds, releases, and tests of code before they push those changes to other team members. Avoid using mainline type branching patterns that don’t provide code stages; this leads to broken code and unfinished work making its way into a release.</p>
<h2><strong><a href="http://accurev.com/blog/wp-content/uploads/2012/02/GDD.jpg"><img class="alignleft size-full wp-image-3019" title="Geographically Distributed Teams" src="http://accurev.com/blog/wp-content/uploads/2012/02/GDD.jpg" alt="GDD Quick Tips on Branching Patterns from an Expert" width="306" height="226" /></a>Manage Distributed Teams</strong></h2>
<p>Collaborating and sharing code with <a href="http://www.accurev.com/geographically-distributed-development.html">distributed teams</a> is more complex than ever &#8211; teams routinely develop in one location and test or perform other tasks in another location. This distribution of teams strains the development process, yielding security, auditing, and integration problems.</p>
<p>Development teams must appear to be co-located while utilizing the same process with lower complexity. This means code integrations with other projects should happen in real time, so teams can give each other feedback immediately. The branching pattern and process must be followed by everyone, to ensure they are all on the same page.</p>
<h2><strong>Understand What has been Delivered</strong></h2>
<p>User Stories, bugs, and requirements drive any process, but the ability to see what changes match such items and the location of those code changes are often overlooked in the branching structure.</p>
<p>There is a magical feature that many SCM tools have, called “change-sets” or “<a href="http://www.accurev.com/change-packages.html">Change Packages</a>” in AccuRev. Change Packages associate your changes in the branch with an issue, so you can stay organized and move issues from branch to branch, without having to remember what file went with what issues.</p>
<p>Take these pieces of advice, and they will help if you want to build a release with “finished” issues or if you want traceability into what people are currently working on for a specific release.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/' addthis:title='Quick Tips on Branching Patterns from an Expert '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Opening the Desk Drawers of the AccuRev Mind</title>
		<link>http://accurev.com/blog/2011/01/03/opening-accurev-scm-html/</link>
		<comments>http://accurev.com/blog/2011/01/03/opening-accurev-scm-html/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 15:47:04 +0000</pubDate>
		<dc:creator>jtalbott</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[change packages]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Product Review]]></category>
		<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[accurev 4.9]]></category>
		<category><![CDATA[branching and merging]]></category>
		<category><![CDATA[streambrowser]]></category>
		<category><![CDATA[web user interface]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2453</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/01/03/opening-accurev-scm-html/' addthis:title='Opening the Desk Drawers of the AccuRev Mind ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>To borrow from a common print journalism trick, consider this the cleaning out the desk drawers of my AccuRev mind.  Or if you tend to avoid newspaper columnists, especially sports ones, then let&#8217;s just call this a random &#8220;did you know&#8221; or &#8220;what&#8217;s new&#8221; post.  I think the last time I did one of these [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/01/03/opening-accurev-scm-html/' addthis:title='Opening the Desk Drawers of the AccuRev Mind '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/01/03/opening-accurev-scm-html/' addthis:title='Opening the Desk Drawers of the AccuRev Mind ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>To borrow from a common print journalism trick, consider this the cleaning out the desk drawers of my AccuRev mind.  Or if you tend to avoid newspaper columnists, especially sports ones, then let&#8217;s just call this a random &#8220;did you know&#8221; or &#8220;what&#8217;s new&#8221; post.  I think the last time I did one of these was in the AccuRev Version 4.5 days, and we now entered the days of <a href="http://www.accurev.com/press-releases/20101118-accurev-49-breaks-new-groud-floating-licenses-support-use-scm-tools-diverse-" target="_blank">AccuRev 4.9,</a> so there might be a few things tossed in here that aren&#8217;t necessarily fresh off the presses&#8230;</p>
<p>AccuRev 4.9 introduces the long sought after &#8220;stale filter&#8221;.  Actually, it&#8217;s an Update Preview search, but it shows not just (stale) files, but also anything that will change at update time, like moves and new elements.  You can even perform actions in that search pane, like Diffs, prior to updating&#8230;</p>
<ul><a href="http://www.accurev.com/blog/wp-content/uploads/2010/12/update_preview.jpg"><img class="aligncenter size-full wp-image-2456" title="AccuRev 4.9- update preview" src="http://www.accurev.com/blog/wp-content/uploads/2010/12/update_preview.jpg" alt="Software Configuration Management" width="667" height="229" /></a></ul>
<p>AccuRev 4.9 also brings you the -t &lt;time_spec&gt; argument for both stat and pop.  This lets you provide a transaction or time stamp to the command so you can reference a configuration of code at a point in time without having to utilize a time-based stream.</p>
<p style="text-align: center;"><a href="http://www.accurev.com/blog/wp-content/uploads/2010/12/stat_pop_dash_t.jpg"><img class="aligncenter size-full wp-image-2457" title="AccuRev 4.9- stat_pop_dash_t" src="http://www.accurev.com/blog/wp-content/uploads/2010/12/stat_pop_dash_t.jpg" alt="Software Configuration Management" width="625" height="147" /></a></p>
<p>Sticking with command-line tidbits, you can now use pop -D to populate elements without including their entire directory structure.  Very useful in situations where you might have different applications contained under a root folder yet want to populate them at a top level.</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2010/12/pop_dash_D.jpg"><img class="aligncenter size-full wp-image-2458" title="AccuRev 4.9- pop_dash_D" src="http://www.accurev.com/blog/wp-content/uploads/2010/12/pop_dash_D.jpg" alt="Software Configuration Management" width="637" height="183" /></a></p>
<p>Another really helpful enhancement is to the Deep Overlap search.  Now when you Merge a file that is in Deep Overlap, AccuRev changes the status to (kept)(member) in the filter so that you know which files have been operated on.  You also have the ability to promote from this search window, and subsequently the promoted file will no longer appear in the filter.</p>
<p style="text-align: center;"><a href="http://www.accurev.com/blog/wp-content/uploads/2010/12/deep_overlap.jpg"><img class="aligncenter size-full wp-image-2459" title="AccuRev 4.9- deep_overlap" src="http://www.accurev.com/blog/wp-content/uploads/2010/12/deep_overlap.jpg" alt="Software Configuration Management" width="689" height="282" /></a></p>
<p>If you haven&#8217;t started using the <a href="http://www.accurev.com/web-interface.html" target="_blank">AccuRev WebUI</a>, you&#8217;re really missing out.  One lesser known capability in the WebUI is the ability to take a regular query, Group by any field, and automatically convert it to a bar, line, or pie chart.  This report can then be sent and accessed as a URL, and obviously can be viewed by users without installing the classic GUI.</p>
<p style="text-align: center;"><a href="http://www.accurev.com/blog/wp-content/uploads/2010/12/webui_pie_chart.jpg"><img class="aligncenter size-full wp-image-2460" title="AccuRev 4.9- webui_pie_chart" src="http://www.accurev.com/blog/wp-content/uploads/2010/12/webui_pie_chart.jpg" alt="Software Configuration Management" width="592" height="340" /></a></p>
<p>To further bind the classic GUI and WebUI together, <a href="http://www.accurev.com/issue-tracking.html" target="_blank">AccuWork issues</a> in the classic GUI now contain a hyperlink &#8220;Issue URL&#8221; which takes you directly to the URL rendering of the issue in the WebUI.  And for those with a very extensive stream structure, have you checked out the St\ream Filter to personalize and only display streams that you care about?</p>
<p style="text-align: center;"><a href="http://www.accurev.com/blog/wp-content/uploads/2010/12/stream_filter.jpg"><img class="aligncenter size-full wp-image-2461" title="AccuRev 4.9- stream_filter" src="http://www.accurev.com/blog/wp-content/uploads/2010/12/stream_filter.jpg" alt="Software Configuration Management" width="559" height="354" /></a></p>
<p>For folks running <a href="http://www.accurev.com/continuous-integration.html" target="_blank">Continuous Integration</a>, or for those who just want to be able to use command-line to see what&#8217;s changed in a stream over time &#8211; including inherited content! &#8211; I think you&#8217;ll be happy with this one.  You can use the accurev diff command to compare the contents of a single stream with itself over a period of time, without having to create a time-based stream.</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2010/12/accurev_diff_dash_t.jpg"><img class="aligncenter size-full wp-image-2462" title="AccuRev 4.9- accurev_diff_dash_t" src="http://www.accurev.com/blog/wp-content/uploads/2010/12/accurev_diff_dash_t.jpg" alt="Software Configuration Management" width="727" height="211" /></a></p>
<p>Have you noticed that when using the Stream Issue Mode in the <a href="http://www.accurev.com/streambrowser.html" target="_blank">StreamBrowser</a>, you now see Incomplete Issues right in the &#8220;Show Active&#8230;&#8221; box attached to streams?</p>
<p style="text-align: center;"><a href="http://www.accurev.com/blog/wp-content/uploads/2010/12/incomplete_issues.jpg"><img class="aligncenter size-full wp-image-2463" title="AccuRev 4.9- incomplete_issues" src="http://www.accurev.com/blog/wp-content/uploads/2010/12/incomplete_issues.jpg" alt="Software Configuration Management" width="594" height="259" /></a></p>
<p>And lastly for now, bonus points for anyone who can comment here to point out the AccuRev command-line typo that still works as if it is spelled correctly.  AccuRevers or former ones need not apply  <img src='http://accurev.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="Opening the Desk Drawers of the AccuRev Mind" /> </p>
<p>__________________________________________________________________________________________________________________________________________________</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/01/03/opening-accurev-scm-html/' addthis:title='Opening the Desk Drawers of the AccuRev Mind '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/01/03/opening-accurev-scm-html/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Change Packages for Agile Workflow</title>
		<link>http://accurev.com/blog/2010/06/24/change-packages-for-agile-workflow/</link>
		<comments>http://accurev.com/blog/2010/06/24/change-packages-for-agile-workflow/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:46:21 +0000</pubDate>
		<dc:creator>damonpoole</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[change packages]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[user stories]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=1999</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/24/change-packages-for-agile-workflow/' addthis:title='Change Packages for Agile Workflow ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>User Story Based Engineering In other blog posts I’ve talked about using Multi-stage Continuous Integration to scale Continuous Integration for use in multi-team environments and using streams or branches to model your workflow directly in your SCM tool. While both of these approaches work well and provide a lot of value, they can also present [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/24/change-packages-for-agile-workflow/' addthis:title='Change Packages for Agile Workflow '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/24/change-packages-for-agile-workflow/' addthis:title='Change Packages for Agile Workflow ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><h2>User Story Based Engineering</h2>
<p>In other blog posts I’ve talked about using <a href="http://www.accurev.com/multistage-continuous-integration.html" target="_blank">Multi-stage Continuous Integration</a> to scale <a href="http://www.accurev.com/continuous-integration.html" target="_blank">Continuous Integration</a> for use in multi-team environments and using streams or branches to model your workflow directly in your <a href="http://www.accurev.com/scm_comparisons2.html" target="_blank">SCM tool</a>. While both of these approaches work well and provide a lot of value, they can also present a new challenge: how to associate enhancement requests and defects, which can be lumped together using the term “work items,” with the changes that implement them?</p>
<p>If you are doing mainline development, life is pretty simple. On check-in enter the enhancement request ID or defect ID in the comments. Once that association is made, it is fairly straightforward to figure out which enhancements and defects have been checked in. On the other hand, the more people you have checking in to the same branch, the less likely it is to be stable, even if you are doing Continuous Integration. So, how can we maximize the benefits of using streams to represent process and integration stages and still have the ability to match work items to the work done to implement them?</p>
<h2>Representing Process and Integration Stages with Change Packages</h2>
<p>(Let me first point out that while I’m using the generic term “work item” here, in an Agile team one would most likely use the term “User Story.” Both apply equally well in this context, but I’ll stick with work item for now.)</p>
<p>There is an SCM concept that maps to a work item which can be tracked from place to place, and that is a <strong>“change package.”</strong> It is called a <a href="http://www.accurev.com/change-packages.html" target="_blank">change package</a> because it represents something which, once defined, can be applied to multiple places and tracked regardless of how many different places it has been propagated.</p>
<p>Change packages can be promoted individually or in groups from stream to stream. That way, as work is promoted from stream to stream you have a record of the content of each stream from a high level perspective instead of a files perspective. A list of files is not very meaningful or useful. On the other hand, change packages allow you to ask questions like “which user stories are in the stream that represents all user stories that are ‘done’,” without having to resort to mainline development.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/24/change-packages-for-agile-workflow/' addthis:title='Change Packages for Agile Workflow '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2010/06/24/change-packages-for-agile-workflow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Something&#8217;s A-Twitter in My Backing Stream</title>
		<link>http://accurev.com/blog/2010/06/22/twitter-backing-stream/</link>
		<comments>http://accurev.com/blog/2010/06/22/twitter-backing-stream/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 13:49:02 +0000</pubDate>
		<dc:creator>amonty</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[agile team]]></category>
		<category><![CDATA[backing stream]]></category>
		<category><![CDATA[change packages]]></category>
		<category><![CDATA[issue tracking]]></category>
		<category><![CDATA[promote]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[trigger]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=1917</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/22/twitter-backing-stream/' addthis:title='Something&#8217;s A-Twitter in My Backing Stream ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>One of the cornerstones of any successful organization is communication. On Agile teams, we often meet to share information, update one another on progress, to reflect on that progress and discuss how the process can be improved. These interactions, be they stand-up or retrospective meetings, provide this information at regular intervals. But what if you [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/22/twitter-backing-stream/' addthis:title='Something&#8217;s A-Twitter in My Backing Stream '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/22/twitter-backing-stream/' addthis:title='Something&#8217;s A-Twitter in My Backing Stream ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>One of the cornerstones of any successful organization is communication. On Agile teams, we often meet to share information, update one another on progress, to reflect on that progress and discuss how the process can be improved. These interactions, be they stand-up or retrospective meetings, provide this information at regular intervals. But what if you need &#8220;real-time&#8221;  information sharing?</p>
<p>Consider the concept of &#8220;one piece flow&#8221;, often treated as the holy grail of engineering process purists. Lean/Kanban fan boys live to talk about this at conferences, and in the isle outside my cube. The idea is that a single &#8220;workpiece&#8221; at a time moves through the workflow. In the software development process, this is rarely limited to a single item, but instead is throttled by WIP limits to minimize the bottlenecks in the process. For example, the number of items worked on by developers is limited so that the count of items designated &#8220;ready for test&#8221; is kept at a manageable level. As a tester on an agile team, I&#8217;d like to know as soon as an item is moved from the &#8220;wip/development&#8221; phase to the &#8220;test/validation&#8221; phase.</p>
<p>Consider the following basic stream structure -</p>
<p style="text-align: center;"><img class="size-medium wp-image-1931 aligncenter" title="Simple stream structure" src="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-300x171.png" alt="Simple Stream Structure" width="300" height="171" /></p>
<p>In an ideal model, testers would be notified as soon as an issue is promoted from the <em>WIP</em> stream to the <em>Validation</em> stream. This model assumes that the project is utilizing <a href="http://www.accurev.com/" target="_blank">AccuRev</a> <em>change packages</em> to track work items as issues. Having a distinct stream for validation purposes simplifies the job of the tester. All issues that exist in this stream have been unit tested by developers, passed basic regression tests, and are ready to be explored, validated, and promoted to the next stage in the workflow.</p>
<p>So, how can this level of communication be achieved? <strong>AccuRev triggers!</strong> The rest of this post will demonstrate how the <em>server post-promote</em> trigger could be used to provide updates using arguably the king of &#8220;What&#8217;s Happening?&#8221; &#8211; <a href="http://twitter.com">Twitter</a>.</p>
<h2>Why use Twitter in your Backing Stream?</h2>
<p>Why not? Sure, you could use e-mail. But who wants more e-mail? Tweet it, and let them aggregate the information for you. Team members can follow the account, or not. Pointy-haired managers that dream of pie charts and love visibility can subscribe to an RSS feed, that you don&#8217;t have to manage. Lastly, if you&#8217;re an agilista, you&#8217;re already hip and trendy, (and let&#8217;s face it, you probably  already tweeted about the awesome presentation on Lean that you saw at the latest Agile conference).</p>
<h2>The Server Post-Promote Trigger</h2>
<p>I am not going to go into the gory details of the <a href="http://www.accurev.com/developer-training-advanced.html" target="_blank">AccuRev trigger system</a>. Here&#8217;s what you need to know.</p>
<ol>
<li>The trigger can be written in whatever language you like. In this example, I use Ruby.</li>
<li>The trigger needs to be registered with the AccuRev server, and associated with the depot for your software project.</li>
</ol>
<p>For this exercise, I wrote a quick script called <em>tweet_post_promote.rb</em>. The first step is to register this script with AccuRev.</p>
<p><em>&gt;accurev mktrig -p SoftwareProject server-post-promote-trig ~/dev/ruby/tweet_post_promote.rb</em></p>
<p>Once registered, the trigger will now fire for all promotes in the SoftwareProject depot. Let&#8217;s take a look at the contents of the script.</p>
<p><em>#!/usr/bin/env ruby</em></p>
<p><em>require &#8216;rubygems&#8217;</em></p>
<p><em>require &#8216;crack&#8217;</em></p>
<p><em>require &#8216;twitter&#8217;</em></p>
<p><em>ACCUREV_DIR = &#8220;/sandbox/amonty/accurev/&#8221;</em></p>
<p><em>ACCUREV_STORAGE = &#8220;#{ACCUREV_DIR}storage/&#8221;</em></p>
<p><em>ACCUREV_SITE_SLICE = &#8220;#{ACCUREV_STORAGE}site_slice/&#8221;</em></p>
<p><em>USER = &#8216;ValidationBot&#8217;</em></p>
<p><em>PASS = &#8216;password&#8217;</em></p>
<p><em><br />
</em></p>
<p><em>def load_trigger_data(file)</em></p>
<p style="padding-left: 30px;"><em>xml = &#8221;</em></p>
<p style="padding-left: 30px;"><em>File.open(&#8220;#{ACCUREV_SITE_SLICE}#{file}&#8221;) do |f|</em></p>
<p style="padding-left: 60px;"><em>xml = f.read</em></p>
<p style="padding-left: 30px;"><em>end</em></p>
<p style="padding-left: 30px;"><em>Crack::XML.parse(xml)</em></p>
<p><em>end</em></p>
<p><em><br />
</em></p>
<p><em>def twitter_get_auth(user, pass)</em></p>
<p style="padding-left: 30px;"><em>httpauth = Twitter::HTTPAuth.new(user, pass)</em></p>
<p style="padding-left: 30px;"><em>Twitter::Base.new(httpauth)</em></p>
<p><em>end</em></p>
<p><em><br />
</em></p>
<p><em>def main()</em></p>
<p style="padding-left: 30px;"><em>hash = load_trigger_data ARGV[1]</em></p>
<p style="padding-left: 30px;"><em>if hash["triggerInput"]["stream1"] == &#8220;Validation&#8221; then</em></p>
<p style="padding-left: 60px;"><em>changePackageIssue = hash["triggerInput"]["changePackages"]["changePackageID"]</em></p>
<p style="padding-left: 60px;"><em>update_string = &#8220;Issue #{changePackageIssue} just promoted to stream #{hash["triggerInput"]["stream1"]}&#8221;</em></p>
<p style="padding-left: 60px;"><em>twitter = twitter_get_auth(USER, PASS)</em></p>
<p style="padding-left: 60px;"><em>twitter.update update_string</em></p>
<p style="padding-left: 30px;"><em>end</em></p>
<p><em>end</em></p>
<p><em>main if __FILE__ == $0</em></p>
<p>This script is very simple. It makes use of the Ruby gems crack and Twitter. Essentially, the script takes the XML trigger file (provided as <em>ARGV[1]</em>) and loads it into a hash. Then the script checks to see if the stream being promoted to is our <em>Validation</em> stream. If so, it uses the twitter gem to update the status on our <em>ValidationBot</em> account.</p>
<p style="text-align: center;"><img class="size-medium wp-image-1945  aligncenter" title="Something's a-Twitter in my Backing Stream" src="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-2-300x43.png" alt="Something's a-Twitter in my backing stream" width="300" height="43" /></p>
<p>A more useful example is to provide a link to the AccuRev Web UI Issue screen.</p>
<p style="text-align: center;"><a href="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-3.png"><img class="size-medium wp-image-1949  aligncenter" title="Something's a-Twitter in my Backing Stream" src="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-3-300x80.png" alt="Something's a-Twitter in My Backing Stream" width="300" height="80" /></a></p>
<p>This way, anyone subscribing to the feed can click on the link and open the issue in the AccuRev Web UI.</p>
<p style="text-align: center;"><a href="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-4.png"><img class="size-medium wp-image-1950  aligncenter" title="Something's a-Twitter in my Backing Stream- anyone subscribing to the feed can click on the link and open the issue in the AccuRev Web UI." src="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-4-300x249.png" alt="Something's A-Twitter in My Backing Stream" width="300" height="249" /></a></p>
<p>This is a small example of how AccuRev triggers can be used to increase communication on your team. Testers can follow the <em>ValidationBot</em> account and be notified via their favorite Twitter client whenever an issue is promoted to the validation stream and they need to begin work on it. This could obviously be extended to include additional information (actual file changes, for example). That is, of course, if you can fit it into 140 characters. <img src='http://accurev.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' title="Somethings A Twitter in My Backing Stream" /> </p>
<p>For more information on AccuRev triggers, please see the <a href="http://www.accurev.com/download/docs/4.7.4b_books/AccuRev_4_7_Admin.pdf">Administrator&#8217;s Guide</a>.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/22/twitter-backing-stream/' addthis:title='Something&#8217;s A-Twitter in My Backing Stream '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2010/06/22/twitter-backing-stream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting the Most out of AccuRev’s Windows Explorer Integration</title>
		<link>http://accurev.com/blog/2009/03/18/getting-the-most-out-of-accurev%e2%80%99s-windows-explorer-integration/</link>
		<comments>http://accurev.com/blog/2009/03/18/getting-the-most-out-of-accurev%e2%80%99s-windows-explorer-integration/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 18:08:09 +0000</pubDate>
		<dc:creator>acserpa</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[AccuBridge]]></category>
		<category><![CDATA[auditability]]></category>
		<category><![CDATA[change packages]]></category>
		<category><![CDATA[compliance]]></category>
		<category><![CDATA[design artifacts]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[project plans]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[Windows Explorer]]></category>

		<guid isPermaLink="false">http://blog.accurev.com/?p=721</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2009/03/18/getting-the-most-out-of-accurev%e2%80%99s-windows-explorer-integration/' addthis:title='Getting the Most out of AccuRev’s Windows Explorer Integration ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>As organizations become more advanced in their use of software configuration managment (SCM) they typically expand its use to include more than the software developers.  A common addition is around audibility and compliance of the entire development process which may require them to version more than just the source code, but also any requirements, project [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2009/03/18/getting-the-most-out-of-accurev%e2%80%99s-windows-explorer-integration/' addthis:title='Getting the Most out of AccuRev’s Windows Explorer Integration '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2009/03/18/getting-the-most-out-of-accurev%e2%80%99s-windows-explorer-integration/' addthis:title='Getting the Most out of AccuRev’s Windows Explorer Integration ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>As organizations become more advanced in their use of<span> <a href="http://www.accurev.com/software-configuration-management.html" target="_blank">software configuration managment </a>(</span>SCM)<span> </span>they typically expand its use to include more than the software developers.  A common addition is around audibility and compliance of the entire development process which may require them to version more than just the source code, but also any requirements, project plans, design artifacts and documentation.  This enables the labeling of the big picture of who, what, where, why and how the software was developed.</p>
<p><span>With this expansion there are now more users of the<span> </span><a href="http://www.accurev.com/scm_comparisons.html" target="_blank">SCM<span> </span>tools</a>, many of whom have never used a <a href="http://www.accurev.com/accurev-version-control.html" target="_blank">version control</a> solution before. A few examples of these new user types may be hardware designers, graphic designers, product managers, or the documentation team. These types of users are working with different types of files, and work in different tools than the traditional software developers and because of that may use <a href="http://www.accurev.com/accurev-version-control.html" target="_blank">version control tools</a> in different ways.  These users may have<span> </span>historically created versions of files using naming convention such as:</span></p>
<p><span> ReleaseNotes_v1.doc,<span> </span>ReleaseNotes_v2.doc etc. all on their local computer. </span></p>
<p><span>Obviously this can be an error prone process and also a single point of failure if something were to happen to that user’s computer.  Since many of the files they work on are binary (.doc, .pdf, .ai, .dwg, .vsd<span> </span>etc.) they may want to work on these files in a serial mode so they don&#8217;t have to try to manually merge them when someone else makes changes to them in parallel.  So instead of the traditional use of<span> </span>AccuRev,<span> </span>taking advantage of our parallel development features, these users may want to work in exclusively locked<span> </span>workspaces<span> </span>or at least have exclusive locks on certain files to protect them.</span></p>
<p><span>In order to make this new type of user successful they need to use an interface that is familiar to them. With many <a href="http://www.accurev.com/accurev-source-code-control.html" target="_blank">source code control</a> tools they may have to write scripts, <a href="http://www.accurev.com/product-overview.html" target="_blank">manage configurations </a>or interact with a <a href="http://blog.accurev.com/2008/10/01/accurev-cli-going-beyond-scm/" target="_blank">command line interface</a><span> </span>to be able to get their work done. This type of interaction will likely not work well for these types of users, as many of them may not have the technical know how to work in those environments.  AccuRev<span> </span>can make this transition much more fluid and familiar for these users with the<span> </span><a href="http://www.accurev.com/accubridge-windows-explorer.html" target="_blank">AccuBridge<span> </span>for Windows Explorer</a>. This interface gives the user access to the<span> </span>AccuRev<span> </span>commands needed from within the familiarity of Windows Explorer as seen in exhibit 1.</span></p>
<div id="attachment_779" class="wp-caption alignnone" style="width: 460px"><a href="http://www.accurev.com/blog/wp-content/uploads/2009/03/exhibit15.jpg" target="_blank"><img class="size-full wp-image-779 " title="Exhibit 1" src="http://www.accurev.com/blog/wp-content/uploads/2009/03/exhibit15.jpg" alt="AccuBridge for Windows Explorer" width="450" height="363" /></a><p class="wp-caption-text">AccuBridge for Windows Explorer</p></div>
<p><span id="more-721"></span></p>
<p>This interface gives the user the access to the<span> </span>AccuRev<span> </span>commands that allow them to open the files in the tool of their choice to make changes, keep, promote and revert those changes, create and update<span> </span>workspaces, view the statuses of files,<span> </span>AccuRev<span> </span>version information and lock types for the files, search for changed files within the workspace and view history. Even, if desired, create <a href="http://www.accurev.com/change-packages.html" target="_blank">change packages</a> associated with issues for the promotions just like the software development organization.  This coupled with the traditional Windows Explorer fields and views give the users a variety of different ways to view and interact with the files such as choose thumbnails view, which can be helpful for these users to see an image of the contents as seen in exhibit 2.</p>
<div id="attachment_780" class="wp-caption alignnone" style="width: 460px"><img class="size-full wp-image-780 " title="Exhibit 2" src="http://www.accurev.com/blog/wp-content/uploads/2009/03/exhibit23.jpg" alt="Thumbnails view with Windows generatored images" width="450" height="316" /><p class="wp-caption-text">Thumbnails view with Windows generated images</p></div>
<p><span>It is with the use of<span> </span>AccuRev<span> </span>with the<span> </span>AccuBridge<span> </span>for Windows Explorer that I have seen the fastest and widest adoption of <a href="http://www.accurev.com/accurev-version-control.html" target="_blank">version control</a> to groups unfamiliar with version control across organizations. Both the organizations and end users have seen tremendous benefits from having this information readily available in the version controlled repository, and I have seen this implemented all in a single depot with streams that separate out these items from the source code or some have opted for completely separate repositories.  <strong>I prefer to have them in a single repository separated by streams</strong> because it gives you the ability to include these artifacts in snapshots with the source. In addition to the ease of adoption for new AccuRev users, the AccuBridge for Windows Explorer can also benefit the current users both indirectly and directly.  Indirectly they benefit form knowing where to always find the latest and greatest files from the designers and product managers to ensure they are working off of the most up to date specifications.  Directly they too can use the AccuBridge for Windows Explorer as an alternative to the IDE integrations, command line or <a href="http://www.accurev.com/streambrowser.html" target="_blank">AccuRev StreamBrowser</a>.  This can be of particular help when editing files in the non-standard editors by using the &#8216;Open With&#8230;&#8217;  and then having the abililty to keep the changes without having to jump between interfaces.</span></p>
<p><span> All in all the AccuBridge for Windows Explorer can be an easy way to incorporate the non-source artifacts into the release process  for compliance, as well as another way for the software developer to interact with AccuRev.</span></p>
<p class="MsoNormal">
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2009/03/18/getting-the-most-out-of-accurev%e2%80%99s-windows-explorer-integration/' addthis:title='Getting the Most out of AccuRev’s Windows Explorer Integration '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2009/03/18/getting-the-most-out-of-accurev%e2%80%99s-windows-explorer-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use Case: Fixing the Broken Build</title>
		<link>http://accurev.com/blog/2008/11/04/use-case-fixing-the-broken-build/</link>
		<comments>http://accurev.com/blog/2008/11/04/use-case-fixing-the-broken-build/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 13:39:37 +0000</pubDate>
		<dc:creator>rmohr</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[broken builds]]></category>
		<category><![CDATA[change packages]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[issue tracking]]></category>
		<category><![CDATA[private workspaces]]></category>
		<category><![CDATA[software development process]]></category>
		<category><![CDATA[time-based stream]]></category>
		<category><![CDATA[unit test]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=414</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/11/04/use-case-fixing-the-broken-build/' addthis:title='Use Case: Fixing the Broken Build ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>by Rob Mohr, AccuRev In one of many travels and customer visits, I came across a very cool way that AccuRev was helping to improve the way development teams do their work. To be more specific, this group was using Change Packages integrated with the JIRA Issue Tracking system to manage changes across their various product [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/11/04/use-case-fixing-the-broken-build/' addthis:title='Use Case: Fixing the Broken Build '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/11/04/use-case-fixing-the-broken-build/' addthis:title='Use Case: Fixing the Broken Build ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p><strong>by Rob Mohr, AccuRev</strong></p>
<p>In one of many travels and customer visits, I came across a very cool way that AccuRev was helping to improve the way development teams do their work. To be more specific, this group was using <a href="http://www.accurev.com/change-packages.html" target="_blank">Change Packages</a> integrated with the <a href="http://www.accurev.com/accubridge-jira.html" target="_blank">JIRA</a> Issue Tracking system to manage changes across their various product releases. They also used CruiseControl for <a href="http://www.accurev.com/continuous-integration.html" target="_blank">continuous integration</a> that would kick off nightly builds and notify the team with the results of the build.</p>
<p>From what they told me, the success of builds has significantly improved since they started using AccuRev because of the ability for the developers to work in their own <a href="http://www.accurev.com/private-versioning.html" target="_blank">private workspaces</a> where they can integrate and unit test before promoting their changes for the rest of the team. Although broken builds are, for the most part, a thing of the past, they will still occur once in a while and need to be fixed ASAP.</p>
<p><strong>Here is how they do it with AccuRev</strong></p>
<p>The <a href="http://www.accurev.com/streambrowser.html" target="_blank">stream structure</a> below is a simpler view of their overall <a href="http://www.accurev.com/product-overview.html" target="_blank">software development process</a>, but will be sufficient to show the use case.</p>
<p><strong>Promoting to the Integration Stream</strong></p>
<p>To start, the 4 developers below have made changes in their workspaces that will be promoted and associated to 4 different issues.</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2008/11/b1.jpg" target="_blank"><img class="alignnone size-full wp-image-415" title="b1" src="http://www.accurev.com/blog/wp-content/uploads/2008/11/b1.jpg" alt="b1 Use Case: Fixing the Broken Build" width="449" height="156" /></a></p>
<p>As you can see below, the integration stream (EntSoft_Client_Int) is “aware” of which issues are active in the stream. These are the new “change packages” introduced in the stream to be included in the next nightly build.</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2008/11/2-show-issues.jpg" target="_blank"><img class="alignnone size-full wp-image-416" title="2-show-issues" src="http://www.accurev.com/blog/wp-content/uploads/2008/11/2-show-issues.jpg" alt="2 show issues Use Case: Fixing the Broken Build" width="450" height="108" /></a></p>
<p><strong>Build Fails in the Integration Stream</strong></p>
<p>The next morning, the team is notified that last nights build failed via an email notification from CruiseControl. They have also scripted CruiseControl to automatically enable a time based stream called the “Temp_Fix_Build” stream and assign the appropriate transaction number to rollback the change packages from last night.</p>
<p><strong><a href="http://www.accurev.com/blog/wp-content/uploads/2008/11/b31.jpg" target="_blank"><img class="alignnone size-full wp-image-420" title="b31" src="http://www.accurev.com/blog/wp-content/uploads/2008/11/b31.jpg" alt="b31 Use Case: Fixing the Broken Build" width="450" height="182" /></a></strong></p>
<p><strong>Assign the Developer to Fix the Build</strong></p>
<p>One of the developers creates a workspace on the Temp_Fix_Build and “change palettes” over each change package one at a time.<span>  </span>This gives them the ability to mix and match change packages together to determine which one of them is the problem.</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2008/11/b4.jpg" target="_blank"><img class="alignnone size-full wp-image-418" title="b4" src="http://www.accurev.com/blog/wp-content/uploads/2008/11/b4.jpg" alt="b4 Use Case: Fixing the Broken Build" width="450" height="184" /></a></p>
<p><strong>Problem Solved</strong></p>
<p>After the culprit is fixed, the repaired change package(s) are promoted back into the integration stream for all to share.</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2008/11/b5.jpg" target="_blank"><img class="alignnone size-full wp-image-419" title="b5" src="http://www.accurev.com/blog/wp-content/uploads/2008/11/b5.jpg" alt="b5 Use Case: Fixing the Broken Build" width="450" height="184" /></a></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/11/04/use-case-fixing-the-broken-build/' addthis:title='Use Case: Fixing the Broken Build '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2008/11/04/use-case-fixing-the-broken-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

