<?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; Eclipse</title>
	<atom:link href="http://accurev.com/blog/tag/eclipse/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>Dr. Strangecode, or How I Learned to Stop Worrying and Love Old Code</title>
		<link>http://accurev.com/blog/2008/09/17/dr-strangecode-or-how-i-learned-to-stop-worrying-and-love-old-code/</link>
		<comments>http://accurev.com/blog/2008/09/17/dr-strangecode-or-how-i-learned-to-stop-worrying-and-love-old-code/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 12:43:32 +0000</pubDate>
		<dc:creator>cboran</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Customer Guest Blogs]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[bigballofmud]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[martinfowler]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[SCCM]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Software Configuration Management]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=332</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/09/17/dr-strangecode-or-how-i-learned-to-stop-worrying-and-love-old-code/' addthis:title='Dr. Strangecode, or How I Learned to Stop Worrying and Love Old Code ' ><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 Chris Boran Several years ago I happened to be browsing in my favourite local bookstore and one book in particular caught my eye: Martin Fowler&#8217;s Refactoring: Improving the Design of Existing Code This is the book that changed my whole career. Up until that point, I had lived in a constant state of fear [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/09/17/dr-strangecode-or-how-i-learned-to-stop-worrying-and-love-old-code/' addthis:title='Dr. Strangecode, or How I Learned to Stop Worrying and Love Old Code '  ><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/09/17/dr-strangecode-or-how-i-learned-to-stop-worrying-and-love-old-code/' addthis:title='Dr. Strangecode, or How I Learned to Stop Worrying and Love Old Code ' ><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>by Chris Boran</p>
<p>Several years ago I happened to be browsing in my favourite local bookstore and one book in particular caught my eye: <a title="Martin Fowler" href="http://www.martinfowler.com" target="_blank">Martin Fowler&#8217;s</a> <a title="Refactoring" href="http://www.amazon.com/exec/obidos/ASIN/0201485672" target="_blank">Refactoring: Improving the Design of Existing Code</a></p>
<p>This is the book that changed my whole career. Up until that point, I had lived in a constant state of fear of change. I viewed old code as a house of cards &#8211; if I wasn&#8217;t very careful, it was all going to come down around me. Whenever my boss asked me for advice about what to do in a given area of the code, my answers were almost always similar to:</p>
<blockquote><p>The risk of doing anything but the smallest possible change is <strong>huge</strong> &#8211; so either we do something that is an ugly hack that we will regret later, or we need to take the whole thing apart and re-implement the whole subsystem from the ground up.</p></blockquote>
<p>And predictably, my boss&#8217;s answer was always something like:</p>
<blockquote><p>Okay, we will live with the hack for now, but in the next release we will make time to do it right.</p></blockquote>
<p>Of course every release we were forced to make many similar decisions. When the next release would come, the newly conceived product features would get priority over fixing code that was already working passably. In practice we might get lucky and be able to spend lots of time rewriting a single small subsystem, but introduce ugly hacks that would put 4 other systems on the map for future re-implementation.</p>
<p>The end result is affectionately referred to as a <a title="BigBallOfMud" href="http://en.wikipedia.org/wiki/Big_ball_of_mud" target="_blank">Big Ball of Mud</a>. Yup, it is every bit as pleasant as it sounds. Life is just so miserable when you come to work every day knowing you are going to have to pack another layer of mud on the ball. You gripe about it. Your teammates gripe about it. Your boss gripes about it. Somehow you never seem to make a whole lot of forward progress.</p>
<p>As I read the book, I was at first skeptical. I thought that bad old code needed to be thrown away and not revitalized! But I wanted to see if it would work, and so I set out to try it. I was very careful to follow the techniques exactly as they are laid out in the book. I made sure not to use the word refactor when I really meant rewrite. I was careful to refactor the code every time I saw something I wanted to change and not just note it for later. I made sure that my refactorings were small. I took my time with it.</p>
<p>Obviously working this way required that I also be doing very good unit testing, but I had already bought into <a title="TestDrivenDevelopment" href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">Test Driven Development</a>. I was already writing unit tests for code before fixing bugs in an attempt to prevent regressions. Running these tests after each refactoring was not a big challenge for me.</p>
<p>Bit by bit I discovered the truth. By applying the refactoring techniques, I could take pieces that I thought needed to completely rewriten and make them better while I was fixing bugs in that area. I could kill two birds with one stone.</p>
<p>Then I discovered <a title="Eclipse" href="http://eclipse.org" target="_blank">Eclipse</a>. The built-in refactoring browser captivated me. Suddenly there was a good, fool proof way to do many of the common refactorings, and automation to keep them introducing new errors. My commitment to refactoring was completed and the defect rates in the code that I was responsible for maintaining declined dramatically. I was a convert. Since that time refactoring has been a cornerstone technique in my arsenal. I no longer lived in fear and loathing of old code!</p>
<p>One refactoring that I have still found to be painful, despite Eclipse&#8217;s facilities, is renaming files/classes. In most <a href="http://www.accurev.com/software-configuration-management-resources.htm" target="_blank">software configuration management</a> (SCM) tools, renaming files can have unfortunate unintended side effects because the identity of a file is its path. This leads to a great many developers to name a class once, and then never change its name &#8211; even if that name does not make sense and the design of the code and the classes primary purpose and responsibilities change.</p>
<p>Luckily for me, I am a long time Accurev user. In Accurev, files are not identified by their pathnames, but rather by a unique id. This makes it possible to quickly and easily rename files with no negative side effect. However this process was inconvenient &#8211; I would have to drop out of Eclipse, rename the file with Accurev&#8217;s tools, and then refresh my workspace. Not ideal, but it worked. That is why I was so pleased when the <a title="AccurevEclipse" href="http://www.accurev.com/accubridge-eclipse.html" target="_blank">Accurev-Eclipse Plugin</a> was released &#8211; it integrated the Eclipse Refactoring browser&#8217;s rename actions with Accurev&#8217;s capabilities to make the whole experience seemless. Accurev has helped me to maintain well thought out, easy to understand designs despite constant evolution to those designs.</p>
<div id="adb-tooltip">
<div style="border: 5px solid #c4dae8; font-family: arial; font-style: normal; font-variant: normal; font-weight: bold; font-size: 11px; line-height: 13px; background-color: white; color: #333333; margin: 0;">
<div style="border: 1px solid #78b3d9; text-align: left; padding: 5px;">
<div>Person<span style="color: #006699;"> Martin Fowler&#8217;s</span></div>
<div style="color: #999999; line-height: 14px;">Right click for SmartMenu shortcuts</div>
</div>
</div>
</div>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/09/17/dr-strangecode-or-how-i-learned-to-stop-worrying-and-love-old-code/' addthis:title='Dr. Strangecode, or How I Learned to Stop Worrying and Love Old Code '  ><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/09/17/dr-strangecode-or-how-i-learned-to-stop-worrying-and-love-old-code/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Build Management with AccuRev and Maven</title>
		<link>http://accurev.com/blog/2008/06/25/build-management-with-accurev-and-maven/</link>
		<comments>http://accurev.com/blog/2008/06/25/build-management-with-accurev-and-maven/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 18:30:59 +0000</pubDate>
		<dc:creator>matthew d. laudato</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[build management]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[m2eclipse]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[release management]]></category>
		<category><![CDATA[SCCM]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=211</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/06/25/build-management-with-accurev-and-maven/' addthis:title='Build Management with AccuRev and Maven ' ><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>Build management is a long-overlooked area of software development. As is often the case with underserved areas, the open source community has several good solutions. Maven is among the most interesting and functional solutions for Java developers. I had the chance to take the AccuRev-Maven m2eclipse integration out for a test drive recently. This is [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/06/25/build-management-with-accurev-and-maven/' addthis:title='Build Management with AccuRev and Maven '  ><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/06/25/build-management-with-accurev-and-maven/' addthis:title='Build Management with AccuRev and Maven ' ><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>Build management is a long-overlooked area of software development. As is often the case with underserved areas, the open source community has several good solutions. <a title="Maven website" href="http://maven.apache.org" target="_blank">Maven</a> is among the most interesting and functional solutions for Java developers. I had the chance to take the AccuRev-Maven <a title="m2eclipse website" href="http://m2eclipse.sonatype.org/" target="_blank">m2eclipse</a> integration out for a test drive recently. This is a recently announced integration (read the press release <a title="AccuRev-Maven Press Release" href="http://www.accurev.com/press-releases/050608-maven-scm-accurev.html" target="_blank">here</a> if you are interested, and see my video demo <a title="AccuRev-Maven Flash Demo" href="http://www.accurev.com/virtualbooth/Maven/flash/AccuRev-Maven-Demo.html" target="_blank">here</a>).</p>
<p>The integration follows the pattern of other <a href="http://www.accurev.com/software-configuration-management-resources.htm" target="_blank">software configuration management</a> (SCM) integrations with m2eclipse. A backend provider interface was written to support AccuRev, and the provider was integrated into the m2eclipse environment via the SCMHandler mechanism. I used m2eclipse in conjunction with <a title="AccuBridge for Eclipse" href="http://www.accurev.com/accubridge-eclipse.html" target="_blank">AccuBridge for Eclipse</a> (the AccuRev-provided Team plugin) to materialize Maven projects into a new AccuRev workspace from within Eclipse, and then did some basic Maven build and AccuRev SCM operations.</p>
<p>To get started, I needed to install m2eclipse from Sonatype. I used the Eclipse Update Manager to do this, by creating a new remote site in Update Manager for Sonatype (<a href="http://eclipse.org/m2e/">http://eclipse.org/m2e/</a>). I already had the AccuBridge for Eclipse plugin installed, also obtained via Update Manager (<a title="AccuBridge for Eclipse Update Site" href="http://www.accurev.com/download/eclipseupdate/">http://www.accurev.com/download/eclipseupdate</a>). After restarting Eclipse, I was ready to test.</p>
<p>In my test environment, I had an AccuRev stream called maven_int that I had pre-loaded with (of all things) the source and test code for the Maven integration itself. My goal was to create a new AccuRev workspace based on this stream from within Eclipse that was Maven- and AccuRev-aware. To do this, I used the Eclipse Import functionality and selected the “Checkout Maven Projects from SCM” option. Since I was using AccuRev, I chose the AccuRev provider from the drop down list box. Like other integrations with Maven, AccuRev supports a URL format for specifying where to obtain code. The URL lets you specify the AccuRev user and login credentials, as well as the exact depot and stream from which to import the code. I also chose the make workspace checkout option, which tells the plugin to create an actual AccuRev workspace in a specified location.</p>
<p>After pressing the Finish button on the Import wizard, m2eclipse called out to AccuRev, created a new AccuRev workspace, and created new Eclipse projects (based on whatever Maven POM files were found in the maven_int stream) containing the source code. I then associated the Eclipse projects with AccuRev using the Team Share option so that I would have full access to AccuRev functionality.</p>
<p>Since the projects were all Maven-based, building was done by right clicking on the POM file and selecting one of the build options. To convince myself that the AccuRev functionality worked, I did some edits to a few files, saved the changes, and then used the AccuRev promote option to version that file in the AccuRev repository.</p>
<p>Overall, the integration worked as I expected. The installation of the plugins was fast, it was easy to materialize Maven-based projects from AccuRev, and all of the important Maven and AccuRev functionality was available in the respective plugins. If you are an AccuRev user and want to use Maven, then the combination of m2eclipse and AccuRev integrated inside of the Eclipse environment is a practical desktop tool for managing your local builds.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/06/25/build-management-with-accurev-and-maven/' addthis:title='Build Management with AccuRev and Maven '  ><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/06/25/build-management-with-accurev-and-maven/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Developer Recipes: AccuRev + JIRA + Eclipse using Mylyn</title>
		<link>http://accurev.com/blog/2008/04/09/developer-recipes-accurev-jira-eclipse-using-mylyn/</link>
		<comments>http://accurev.com/blog/2008/04/09/developer-recipes-accurev-jira-eclipse-using-mylyn/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 17:24:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[best of breed tools]]></category>
		<category><![CDATA[defect tracking]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse Mylyn]]></category>
		<category><![CDATA[issue tracking]]></category>
		<category><![CDATA[JIRA]]></category>
		<category><![CDATA[Mylyn Project]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[SCM tools]]></category>
		<category><![CDATA[source code control]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=150</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/04/09/developer-recipes-accurev-jira-eclipse-using-mylyn/' addthis:title='Developer Recipes: AccuRev + JIRA + Eclipse using Mylyn ' ><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>Related Recipes: AccuRev + Eclipse + Ruby. In this developer-centric recipe I am going to setup a power-tool trifecta consisting of Eclipse, JIRA, and AccuRev. I&#8217;m not talking about installing each independently. No, no, no. This recipe is going to take things one step further and configure full bidirectional integrations for a wickedly powerful, fully [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/04/09/developer-recipes-accurev-jira-eclipse-using-mylyn/' addthis:title='Developer Recipes: AccuRev + JIRA + Eclipse using Mylyn '  ><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/04/09/developer-recipes-accurev-jira-eclipse-using-mylyn/' addthis:title='Developer Recipes: AccuRev + JIRA + Eclipse using Mylyn ' ><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><em>Related Recipes:</em> <a href="http://blog.accurev.com/2007/09/18/accurev-eclipse-ruby/">AccuRev + Eclipse + Ruby</a>.</p>
<p>In this developer-centric recipe I am going to setup a power-tool trifecta consisting of <a title="Eclipse IDE" href="http://www.eclipse.org/" target="_blank">Eclipse</a>, <a title="Atlassian Jira" href="http://www.atlassian.com/software/jira/" target="_blank">JIRA</a>, and <a title="AccuRev Process-Centric SCM" href="http://www.accurev.com" target="_blank">AccuRev</a>. I&#8217;m not talking about installing each independently. No, no, no. <a title="AccuRev + JIRA + Eclipse Screenshot" href="http://www.accurev.com/blog/wp-content/uploads/2008/04/accurev_eclipse_jira_eclipse_screenshot.png" target="_blank"><img style="border: 1px solid #acacac; float: right; margin: 5px 0 5px 10px;" src="http://www.accurev.com/blog/wp-content/uploads/2008/04/accurev_eclipse_jira_eclipse_screenshot.png" alt="AccuRev + JIRA + Eclipse Screenshot" width="156" height="84" title="Developer Recipes: AccuRev + JIRA + Eclipse using Mylyn" /></a>This recipe is going to take things <em>one step further</em> and configure full bidirectional integrations for a <strong><span style="color: #000080;">wickedly powerful</span><span style="color: #000080;">, </span></strong><strong><span style="color: #000080;">fully integrated development environment</span></strong><a title="AccuRev + JIRA + Eclipse Chart" href="http://www.accurev.com/blog/wp-content/uploads/2008/04/accurev_eclipse_jira_chart.png" target="_blank"><img style="border: 1px solid #acacac; float: left; margin: 5px 10pt 5px 0;" src="http://www.accurev.com/blog/wp-content/uploads/2008/04/accurev_eclipse_jira_chart.png" alt="AccuRev + JIRA + Eclipse Chart" title="Developer Recipes: AccuRev + JIRA + Eclipse using Mylyn" /></a><em> </em>where the majority of common day-to-day development tasks can be done right within Eclipse <em>(right picture)</em>. Integrations are the crux of setting up a best-of-breed tool strategy and if you use these three tools you definitely want them talking together <em>(left picture)</em>. Enough chop, let&#8217;s rock.</p>
<h3><span style="color: #ff0000;"><strong>Install Applications</strong></span></h3>
<p>Let&#8217;s start by covering the basics and installing the latest versions of all three tools.</p>
<ol>
<li><strong>Install AccuRev 4.6.x</strong>. <a title="Download AccuRev" href="http://www.accurev.com/downloads.html" target="_blank">download</a>. Follow the install wizard. See the <a title="AccuRev Quick Setup" href="http://www.accurev.com/download/docs/4.6.0_books/AccuRev_Notes.pdf" target="_blank">quick setup guide</a> to import code and setup streams <em>[Windows page 1 / Linux-page 13]</em>.</li>
<li><strong>Install Eclipse 3.3.x</strong>. <a title="Download Eclipse" href="http://www.eclipse.org/downloads/" target="_blank">download</a>. Follow the install wizard. See <a title="Eclipse Documentation" href="http://www.eclipse.org/documentation/" target="_blank">documentation</a> if needed.</li>
<li><strong>Install JIRA 3.12.x</strong>. <a title="Download JIRA" href="http://www.atlassian.com/software/jira/download" target="_blank">download</a>. Follow these <a title="Install JIRA" href="http://www.atlassian.com/software/jira/docs/latest/" target="_blank">instructions</a>.</li>
</ol>
<p>At this point, you have three independent tools installed. Developers can checkin/checkout code from AccuRev, use Eclipse to modify the source code, and track bug/feature development with JIRA. In all, not a bad setup. But toggling between all these tools just takes valuable time away from coding and there is no mashing of logically related meta-data to generate useful reports&#8230; such as:</p>
<ul>
<li><span style="color: #000000;">&#8220;W</span><span style="color: #000000;">hich files/lines fixed issue #1234?&#8221;</span></li>
<li><span style="color: #000000;">&#8220;W</span><span style="color: #000000;">as bug #5678 fixed in mainline, 2.x, and 1.x codelines?&#8221;</span></li>
<li><span style="color: #000000;">&#8220;</span><span style="color: #000000;">Release is this Friday. How many issues are unresolved in the QA area and who are we waiting on?&#8221;</span></li>
<li><span style="color: #000000;">&#8220;W</span><span style="color: #000000;">hich fixes went into Release 4.5.101?&#8221;</span></li>
<li><span style="color: #000000;">&#8220;If I start working on the 4.x codeline, which known fixes will I be compiling against?&#8221; </span></li>
</ul>
<h3><span style="color: #ff0000;"><strong>Integrate Eclipse + AccuRev </strong></span></h3>
<p>Let&#8217;s eliminate jumping between Eclipse and the AccuRev CLI or StreamBrowser GUI. Rather, why not just keep/promote/update/merge directly within Eclipse. You can install our native Eclipse plugin via the Eclipse software updater.</p>
<ol>
<li>Help &#8211;&gt; Software Updates &#8211;&gt; Find/Install</li>
<li>Select &#8216;Seach for new features to install&#8217;</li>
<li>Create &#8216;New Remote Site&#8217; named &#8216;<em>AccuRev&#8217; </em>with URL <em>http://www.accurev.com/download/eclipseupdate/32</em></li>
<li>Checkbox &#8216;AccuRev&#8217; and select Finish</li>
</ol>
<p>When you create a new Project, choose to &#8220;Checkout from AccuRev.&#8221; Now the Eclipse &#8216;Team&#8217; menu has a sleu of AccuRev commands available for inline use and your file navigator has icons for <a href="http://www.accurev.com/accurev-version-control.html" target="_blank">version control</a> status. Sweet. <em>Note: there is an AccuRev quickstart PDF located in your Eclipse plugin directory (e.g. /opt/eclipse/plugins/com.accurev.eclipse_4.6.1.32/UsingAB4Eclipse.pdf).</em></p>
<h3><span style="color: #ff0000;"><strong>Integrate Eclipse + JIRA</strong></span></h3>
<p>Have you heard of the <a title="Eclipse Mylyn Project" href="http://www.eclipse.org/mylyn/" target="_blank">Eclipse Mylyn</a> project? Seriously, it&#8217;ll bring a tear to your eye. In short, Mylyn is a generic framework for &#8216;task management&#8217; within Eclipse and has a number of connectors to tools like JIRA, Bugzilla, and Trac. Guess what? You can interact with JIRA directly within Eclipse. It&#8217;s sick! seriously. Once again, you can install directly from the Eclipse software updater. First install the Mylyn framework and then the JIRA connector.</p>
<ol>
<li><strong>Install Mylyn 2.0</strong>. Follow this <a title="Eclipse Mylyn Setup Guide" href="http://www.eclipse.org/mylyn/downloads/" target="_blank">setup guide</a>. Basically, just like the AccuRev plugin above, create a remote updater site with this URL: <em>http://download.eclipse.org/tools/mylyn/update/e3.3</em></li>
<li><strong>Install JIRA Connector</strong>. Follow the short <a title="JIRA Connector for Mylyn 2.0" href="http://confluence.atlassian.com/display/JIRAEXT/Mylyn" target="_blank">setup guide</a> provided by Atlassian.</li>
</ol>
<p>As a developer, your world just got a whole lot better. Not only can you commit/update file changes directly within AccuRev, now you can open/close/update JIRA issues all without leaving Eclipse. Nuts!</p>
<h3><span style="color: #ff0000;"><strong>Integrate AccuRev + JIRA</strong></span></h3>
<p>The final piece to the puzzle. Wait? What does hooking AccuRev to JIRA actually mean?!</p>
<p><em>Lets take a step back.</em> Back in the day, using one of those other traditional <a href="http://www.accurev.com/scm_comparisons.html" target="_blank">branch-based SCM tools</a>, you probably entered your bug #id into the commit comment. Commit 10 files. Enter bug #1234. Commit another 7 files. Enter same bug #1234. Very loose. And you probably had some validation and reporting scripts all stacked on top to keep things (hobbled) together. At the end of the day, this was far from a &#8216;tight&#8217; integration and a struggle to maintain and enforce. Answering the simple question &#8220;which files -and- lines were fixed for bug #1234&#8243; was not easy (probably impossible!).</p>
<p><em>AccuRev Change Packages.</em> AccuRev has an out-of-the-box feature called Change Packages that natively tracks a set of files (as patches) regardless of the number of commits. Change packages are first class citizens in AccuRev. You can promote multiple times to the same change package and even remove files. <strong><span style="color: #ff6600;">The trick is to understand that a change package has a 1-to-1 relationship with&#8230; an issue! </span></strong>And those issues can come from JIRA. So as you work in your AccuRev workspace coding day-to-day you can promote your changes and assign them to a JIRA issue. Then make more changes and promote to the same issue. <strong><span style="color: #000080;">Think of it like this:</span></strong> creating a feature or fix may take 1 day or 100 days; 1 commit or 50 commits; Change packages don&#8217;t care. They just track the current set of files that you claim are &#8216;logically&#8217; related as part of a fix or feature. That&#8217;s it! I&#8217;ll keep this short, but basically, you can now use the change package / issue as a <em>new, first-class currency</em> for promoting further up and/or patching those changes to other codelines! It&#8217;s very powerful. See pg 33 of our <a title="AccuRev Change Package Concepts" href="http://www.accurev.com/download/docs/4.6.0_books/AccuRev_Concepts.pdf" target="_blank">Concepts Guide</a> for details. But I digress.</p>
<p><em>Back to the recipe.</em> Hooking up AccuRev and JIRA means that AccuRev receives issues from JIRA and JIRA receives meta-data such as fixed files and versions for each issue. The setup requires our own connector technology called <a title="AccuBridge for JIRA" href="http://www.accurev.com/accubridge-jira.html" target="_blank">AccuBridge for JIRA</a>. It&#8217;s pretty easy to setup and simply requires mapping JIRA fields to AccuRev fields and setting up the data synchronization. There is a well written &#8216;quick start&#8217; guide to walk you through the entire setup process.</p>
<ol>
<li><strong>Install AccuBridge for JIRA</strong>. <a title="AccuBridge for JIRA Download" href="http://www.accurev.com/download_ab_2008_1.htm" target="_blank">download</a> (link half-way down). Follow the setup guide located in the download package: <em>doc/ais4jira_quick.pdf. <span style="color: #ff0000;">[Note: Additional licensing may be required] </span></em></li>
<li><strong>Enable Change Packages. </strong>See pg 75 of the<a title="AccuRev Admin Guide" href="http://www.accurev.com/download/docs/4.6.1_books/AccuRev_Admin.pdf" target="_blank"> Admin Guide</a>. Basically, you need to tell AccuRev &#8216;when&#8217; to prompt users for issues, &#8216;which&#8217; issues to query for, and which data columns to display in the lists.<em> <span style="color: #ff0000;">[Note: AccuRev Enterprise Edition is required]</span></em></li>
</ol>
<p>At this point, developers are promoting file changes to JIRA issues and JIRA can report on &#8216;who&#8217; fixed &#8216;which&#8217; files for any given bug/feature/task. Now that&#8217;s what I call traceability!</p>
<h3><span style="color: #ff0000;"><strong>All Together Now!</strong></span></h3>
<p>With everything hooked up, what do we have? Simple. <a title="AccuRev + JIRA + Eclipse Screenshot" href="http://www.accurev.com/blog/wp-content/uploads/2008/04/accurev_eclipse_jira_eclipse_screenshot.png" target="_blank"><img style="border: 1px solid #acacac; float: right; margin: 5px 0 5px 10px;" src="http://www.accurev.com/blog/wp-content/uploads/2008/04/accurev_eclipse_jira_eclipse_screenshot.png" alt="AccuRev + JIRA + Eclipse Screenshot" width="156" height="84" title="Developer Recipes: AccuRev + JIRA + Eclipse using Mylyn" /></a>As a developer you can do just about everything directly within Eclipse. Edit files. Commit and update changes from AccuRev. Create issues and update comments/status/fields in JIRA. And behind the scenes, the JIRA records are being annotated by AccuRev as files are promoted out of Eclipse. Eclipse is your one-stop-shop workbench for developing, tracking changes, and managing task workflow <em>(see picture)</em>.</p>
<p>Next we&#8217;ll add a build tool to the mix that integrates with AccuRev, JIRA, and Eclipse&#8230; But that&#8217;s for another day. Sounds great though, doesn&#8217;t it!</p>
<p>/happy coding/ &#8211; dave</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/04/09/developer-recipes-accurev-jira-eclipse-using-mylyn/' addthis:title='Developer Recipes: AccuRev + JIRA + Eclipse using Mylyn '  ><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/04/09/developer-recipes-accurev-jira-eclipse-using-mylyn/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d</title>
		<link>http://accurev.com/blog/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/</link>
		<comments>http://accurev.com/blog/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/#comments</comments>
		<pubDate>Fri, 11 Jan 2008 16:30:56 +0000</pubDate>
		<dc:creator>jsherwood</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[BIRT]]></category>
		<category><![CDATA[developer reporting]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse BIRT]]></category>
		<category><![CDATA[issue query in AccuRev]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[SCM reporting]]></category>
		<category><![CDATA[Software Configuration Management]]></category>

		<guid isPermaLink="false">http://blog.accurev.com/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/' addthis:title='Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d ' ><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>In the prior blog on this topic I talked about the types of data I wanted to collect for developer reporting, and the basics I had to do to get the information out of the AccuRev software configuration management tool and into the Eclipse BIRT tool in Eclipse. I promised charts, but before I get [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/' addthis:title='Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d '  ><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/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/' addthis:title='Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d ' ><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>In the <a target="_blank" href="http://blog.accurev.com/2007/12/06/birt-and-accuwork/" title="BIRT and AccuWork">prior blog</a> on this topic I talked about the types of data I wanted to collect for developer reporting, and the basics I had to do to get the information out of the AccuRev <a target="_blank" href="http://www.accurev.com/downloads.html">software configuration management</a> tool and into the <a target="_blank" href="http://www.eclipse.org/birt/phoenix/">Eclipse BIRT</a> tool in Eclipse.</p>
<p>I promised charts, but before I get there, I realized I had to do a little more work to massage the data for use with BIRT. When you do an issue query in AccuRev (see <a target="_blank" href="http://blog.accurev.com/2007/12/06/birt-and-accuwork/" title="BIRT and AccuWork">prior post</a>) the details for AccuRev users are only exported as the id number. To get this to look nice I ran a second command (<b>accurev show -fx users</b>) to get the user information as xml data. Most AccuRev commands have xml output in the format of &lt;AcResponse&gt;&#8230;&lt;/AcResponse&gt; so I then ran this result through another xsl parser. My xsl file is straightforward and looks like this:</p>
<p>&lt;?xml version=&#8217;1.0&#8242; encoding=&#8217;utf-8&#8242; ?&gt;<br />
&lt;xsl:stylesheet xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221; version=&#8221;1.0&#8243;&gt;<br />
&lt;xsl:output method=&#8221;xml&#8221;/&gt;</p>
<p>&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;users&gt;<br />
&lt;xsl:apply-templates select=&#8221;/AcResponse&#8221;/&gt;<br />
&lt;/users&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;AcResponse&#8221;&gt;<br />
&lt;xsl:apply-templates/&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;Element&#8221;&gt;<br />
&lt;user&gt;<br />
&lt;number&gt;<br />
&lt;xsl:value-of select=&#8221;@Number&#8221;/&gt;<br />
&lt;/number&gt;<br />
&lt;name&gt;<br />
&lt;xsl:value-of select=&#8221;@Name&#8221;/&gt;<br />
&lt;/name&gt;<br />
&lt;/user&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</p>
<p>This generated user tags which I could then use as a lookup when converting the issue data. The output of running this gave me the following xml file (names removed):</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;&lt;users&gt;<br />
&lt;user&gt;&lt;number&gt;1&lt;/number&gt;&lt;name&gt;&#8230;&lt;/name&gt;&lt;/user&gt;<br />
&lt;user&gt;&lt;number&gt;2&lt;/number&gt;&lt;name&gt;&#8230;&lt;/name&gt;&lt;/user&gt;<br />
&lt;/users&gt;</p>
<p>I could now run the issue xml through another xsl translation, which would use the xml above as a lookup table for user details. The issue xsl I used looks like this:</p>
<p><span id="more-92"></span></p>
<p>&lt;?xml version=&#8217;1.0&#8242; encoding=&#8217;utf-8&#8242; ?&gt;<br />
&lt;xsl:stylesheet xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221; version=&#8221;1.0&#8243;&gt;<br />
&lt;xsl:output method=&#8221;xml&#8221;/&gt;</p>
<p>&lt;!&#8211; Begin Lookup table of users &#8211;&gt;<br />
&lt;!&#8211; Setup key &#8211;&gt;<br />
&lt;xsl:key name=&#8221;user-lookup&#8221; match=&#8221;user&#8221; use=&#8221;number&#8221;/&gt;<br />
&lt;!&#8211; Setup variable for users lookup file &#8211;&gt;<br />
&lt;xsl:variable name=&#8221;users-top&#8221; select=&#8221;document(&#8216;activeUsers.out&#8217;)/users&#8221;/&gt;</p>
<p>&lt;!&#8211; Setup match for lookup of users &#8211;&gt;<br />
&lt;xsl:template match=&#8221;users&#8221;&gt;<br />
&lt;xsl:param name=&#8221;curr-user&#8221;/&gt;<br />
&lt;xsl:value-of select=&#8221;key(&#8216;user-lookup&#8217;, $curr-user)/name&#8221;/&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;!&#8211; End setup match for lookup of users &#8211;&gt;<br />
&lt;!&#8211; End Lookup table of users &#8211;&gt;</p>
<p>&lt;!&#8211; Setup match for submittedBy &#8211;&gt;<br />
&lt;xsl:template match=&#8221;submittedBy&#8221;&gt;<br />
&lt;xsl:apply-templates select=&#8221;$users-top&#8221;&gt;<br />
&lt;xsl:with-param name=&#8221;curr-user&#8221; select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:apply-templates&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;!&#8211; End match for submittedBy &#8211;&gt;</p>
<p>&lt;!&#8211; Setup match for assignedTo &#8211;&gt;<br />
&lt;xsl:template match=&#8221;assignedTo&#8221;&gt;<br />
&lt;xsl:apply-templates select=&#8221;$users-top&#8221;&gt;<br />
&lt;xsl:with-param name=&#8221;curr-user&#8221; select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:apply-templates&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;!&#8211; End match for assignedTo &#8211;&gt;</p>
<p>&lt;!&#8211; Setup match for closedBy &#8211;&gt;<br />
&lt;xsl:template match=&#8221;closedBy&#8221;&gt;<br />
&lt;xsl:apply-templates select=&#8221;$users-top&#8221;&gt;<br />
&lt;xsl:with-param name=&#8221;curr-user&#8221; select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:apply-templates&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;!&#8211; End match for closedBy &#8211;&gt;</p>
<p>&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;xsl:apply-templates select=&#8221;/acResponse&#8221;/&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;issues&#8221;&gt;<br />
&lt;issues&gt;<br />
&lt;xsl:apply-templates/&gt;<br />
&lt;/issues&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;issue&#8221;&gt;<br />
&lt;issue&gt;<br />
&lt;issueNum&gt;<br />
&lt;xsl:value-of select=&#8221;issueNum/.&#8221;/&gt;<br />
&lt;/issueNum&gt;<br />
&lt;status&gt;<br />
&lt;xsl:apply-templates select=&#8221;status&#8221;/&gt;<br />
&lt;/status&gt;<br />
&lt;state&gt;<br />
&lt;xsl:apply-templates select=&#8221;state&#8221;/&gt;<br />
&lt;/state&gt;<br />
&lt;severity&gt;<br />
&lt;xsl:apply-templates select=&#8221;severity&#8221;/&gt;<br />
&lt;/severity&gt;<br />
&lt;priority&gt;<br />
&lt;xsl:value-of select=&#8221;priority/.&#8221;/&gt;<br />
&lt;/priority&gt;<br />
&lt;dateSubmitted&gt;<br />
&lt;xsl:value-of select=&#8221;dateSubmitted/.&#8221;/&gt;<br />
&lt;/dateSubmitted&gt;<br />
&lt;dateClosed&gt;<br />
&lt;xsl:value-of select=&#8221;dateClosed/.&#8221;/&gt;<br />
&lt;/dateClosed&gt;<br />
&lt;dateCompleted&gt;<br />
&lt;xsl:value-of select=&#8221;dateCompleted/.&#8221;/&gt;<br />
&lt;/dateCompleted&gt;<br />
&lt;dateAssigned&gt;<br />
&lt;xsl:value-of select=&#8221;dateAssigned/.&#8221;/&gt;<br />
&lt;/dateAssigned&gt;<br />
&lt;submittedBy&gt;<br />
&lt;xsl:apply-templates select=&#8221;submittedBy&#8221;/&gt;<br />
&lt;/submittedBy&gt;<br />
&lt;assignedTo&gt;<br />
&lt;xsl:apply-templates select=&#8221;assignedTo&#8221;/&gt;<br />
&lt;/assignedTo&gt;<br />
&lt;closedBy&gt;<br />
&lt;xsl:apply-templates select=&#8221;closedBy&#8221;/&gt;<br />
&lt;/closedBy&gt;<br />
&lt;/issue&gt;<br />
&lt;!&#8211; xsl:apply-templates/ &#8211;&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;status&#8221;&gt;<br />
&lt;xsl:attribute name=&#8221;name&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;xsl:attribute name=&#8221;value&#8221;&gt;<br />
&lt;xsl:choose&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;New&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;1&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;Reviewed&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;2&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;Scheduled&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;3&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;Closed&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;4&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:otherwise&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;0&#8242;&#8221;/&gt;<br />
&lt;/xsl:otherwise&gt;<br />
&lt;/xsl:choose&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;state&#8221;&gt;<br />
&lt;xsl:attribute name=&#8221;name&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;xsl:attribute name=&#8221;value&#8221;&gt;<br />
&lt;xsl:choose&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;Verified&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;3&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;Complete&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;4&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:otherwise&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;0&#8242;&#8221;/&gt;<br />
&lt;/xsl:otherwise&gt;<br />
&lt;/xsl:choose&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;severity&#8221;&gt;<br />
&lt;xsl:attribute name=&#8221;name&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;xsl:attribute name=&#8221;value&#8221;&gt;<br />
&lt;xsl:choose&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;A'&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;1&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;B'&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;2&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;C'&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;3&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;D'&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;4&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;E'&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;5&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:otherwise&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;0&#8242;&#8221;/&gt;<br />
&lt;/xsl:otherwise&gt;<br />
&lt;/xsl:choose&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</p>
<p>I had to scratch my head how to setup a lookup xml file, until I found <a target="_blank" href="http://www.ibm.com/developerworks/library/x-xsltip.html" title="XSLT lookup Tables">this article</a> on the IBM developerWorks site. It took some experimenting, but the xsl file above did the trick. I could have done a similar lookup for the status/state changes that are also in this xsl file, but it was quicker to enter these values directly. The side effect to keep in mind is because I don&#8217;t dynamically(today) get these values then if they change the xsl file needs to change.</p>
<p>After using this xsl file I get my new issue xml which looks like this (names removed and formatted for display):</p>
<blockquote></blockquote>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />
&lt;issues&gt;<br />
&lt;issue&gt;<br />
&lt;issueNum&gt;1092&lt;/issueNum&gt;<br />
&lt;status name=&#8221;Closed&#8221; value=&#8221;4&#8243;/&gt;<br />
&lt;state name=&#8221;Verified&#8221; value=&#8221;3&#8243;/&gt;<br />
&lt;severity name=&#8221;D&#8221; value=&#8221;4&#8243;/&gt;<br />
&lt;priority&gt;0&lt;/priority&gt;<br />
&lt;dateSubmitted&gt;943077600&lt;/dateSubmitted&gt;<br />
&lt;dateClosed&gt;1188926921&lt;/dateClosed&gt;<br />
&lt;dateCompleted&gt;1172186181&lt;/dateCompleted&gt;<br />
&lt;dateAssigned&gt;943077600&lt;/dateAssigned&gt;<br />
&lt;submittedBy&gt;&#8230;&lt;/submittedBy&gt;<br />
&lt;assignedTo&gt;&#8230;&lt;/assignedTo&gt;<br />
&lt;closedBy&gt;&#8230;&lt;/closedBy&gt;<br />
&lt;/issue&gt;<br />
&lt;issue&gt;<br />
&lt;issueNum&gt;2614&lt;/issueNum&gt;<br />
&lt;status name=&#8221;Scheduled&#8221; value=&#8221;3&#8243;/&gt;<br />
&lt;state name=&#8221;Complete&#8221; value=&#8221;4&#8243;/&gt;<br />
&lt;severity name=&#8221;C&#8221; value=&#8221;3&#8243;/&gt;<br />
&lt;priority&gt;0&lt;/priority&gt;<br />
&lt;dateSubmitted&gt;1007048693&lt;/dateSubmitted&gt;<br />
&lt;dateClosed&gt;1149106741&lt;/dateClosed&gt;<br />
&lt;dateCompleted&gt;1189024691&lt;/dateCompleted&gt;<br />
&lt;dateAssigned&gt;1120772200&lt;/dateAssigned&gt;<br />
&lt;submittedBy&gt;&#8230;&lt;/submittedBy&gt;<br />
&lt;assignedTo/&gt;<br />
&lt;closedBy&gt;&#8230;&lt;/closedBy&gt;<br />
&lt;/issue&gt;<br />
&lt;/issues&gt;</p>
<p>Phew. That being done, I now had a fairly automated method for extracting project issues, lookup tables for extraneous information, and xsl files to massage the data before processing in BIRT. Now I could bring the data into BIRT and begin setting up charts.</p>
<p>I spoke to some extent in the previous blog about the calculated fields I used in BIRT. I&#8217;ve since added a few more. I added a computed column which combines status and state, to make it easier to create certain chart groupings. Because these are two string fields it was as simple as putting in <b>row["status"]+&#8221;/&#8221;+row["state"]</b> as the expression.</p>
<p>I then also added the days to complete an issue, using this expression: <b>(row["dateCompleted"]-row["dateSubmitted"])/86400</b></p>
<p>I now had enough information to create the 7 charts I wanted. I&#8217;ll highlight two that worked well for my purposes.</p>
<p>For completed issues by developer, I used the &#8216;assignedTo&#8217; row as the Category (X) series, turned on grouping and set the interval to 0 so that each developer would get their own line. The Value (Y) Series was then the &#8216;issueNum&#8217; row. From this I got the following chart:</p>
<div style="text-align:center"><img src="http://www.accurev.com/blog/wp-content/uploads/2007/12/issuesbydeveloper.png" alt="Completed Issues By Developer" title="Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d" /></div>
<p>Not bad, and it served my purpose. I could get a quick overview of how the issues were distributed. Some developers may cringe at seeing this type of information, as they fear they are not doing as much as their coworkers, but those reviewing the information have to keep in mind that there are lots of reasons for the issue distribution that is seen. Developers may be assigned more difficult work or not be on the project full time, and these basic numbers will not reflect the extent of these external factors. If you find you cannot easily answer these questions, then you need to find a way to track these external factors and include them in your <a target="_blank" href="http://www.accurev.com/issue-tracking.html">issue management system</a>.</p>
<p>For Severity Distribution, I wanted to take a look at what the general types of issues were that were resolved in the release. This was pretty easy. I created a pie chart, using issueNum as the series and severity as the category (grouping as text and getting the count). Using this I quickly got this chart:</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2008/01/severitydistribution.jpg" title="Severity Distribution"></a></p>
<div style="text-align:center"><a href="http://www.accurev.com/blog/wp-content/uploads/2008/01/severitydistribution.jpg" title="Severity Distribution"><img src="http://www.accurev.com/blog/wp-content/uploads/2008/01/severitydistribution.jpg" alt="Severity Distribution" title="Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d" /></a></div>
<p>Not a bad chart. Our use of severity A is in indication of crashes, so while some were fixed hopefully that is not the focus of the release. By the same token severity D and E cover a lot of cosmetic issues, so this release was a good distribution of the type of issues that should be addressed when preparing a release.</p>
<p>That&#8217;s about it for now. We&#8217;ve started adopting more agile practices, and in particular scrum methodologies, so now I want to revisit the BIRT configuration and start modifying it to generate burn down charts. Perhaps when I&#8217;ve made some progress here I&#8217;ll share some more.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/' addthis:title='Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d '  ><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/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Eclipse BIRT and AccuWork</title>
		<link>http://accurev.com/blog/2007/12/06/birt-and-accuwork/</link>
		<comments>http://accurev.com/blog/2007/12/06/birt-and-accuwork/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 21:00:42 +0000</pubDate>
		<dc:creator>jsherwood</dc:creator>
				<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[AccuWork]]></category>
		<category><![CDATA[BIRT]]></category>
		<category><![CDATA[change management]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse BIRT]]></category>
		<category><![CDATA[reporting tools]]></category>
		<category><![CDATA[reports]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://blog.accurev.com/2007/12/06/birt-and-accuwork/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/12/06/birt-and-accuwork/' addthis:title='Eclipse BIRT and AccuWork ' ><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 a developer I&#8217;ve found it necessary from time to time to generate reports, especially for internal consumption. Internal reports tend to be more adhoc than those presented to clients or non-technology managers, and therefore have less time devoted to their care and feeding (and cost). While I&#8217;ve used Crystal Reports and similar tools for [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/12/06/birt-and-accuwork/' addthis:title='Eclipse BIRT and AccuWork '  ><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/2007/12/06/birt-and-accuwork/' addthis:title='Eclipse BIRT and AccuWork ' ><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 a developer I&#8217;ve found it necessary from time to time to generate reports, especially for internal consumption. Internal reports tend to be more adhoc than those presented to clients or non-technology managers, and therefore have less time devoted to their care and feeding (and cost). While I&#8217;ve used Crystal Reports and similar tools for external reporting, most development reporting has consisted of spreadsheets and any charts that they generate in the ten minutes I have before a review meeting.</p>
<p>Always wanting to explore various technologies, I took the opportunity to try my hand at using the BIRT (Business Intelligence and Reporting Tools) implementation in Eclipse. If you&#8217;re interested in finding out specifics about this plugin, you can find it on the <a target="_blank" href="http://www.eclipse.org/birt/phoenix/">Eclipse web site</a>. While I find the tool to have a higher learning curve than I would have expected, it shows promise for the future.</p>
<p>There are a number of data points that we generate as part of our development, and capturing all of them in a report format proves to be a surprisingly complex task. It is a task that gets little time and investment, as development goals are not report oriented, they are product delivery oriented. I&#8217;ve attempted to capture some of the more mundane details, and set aside future report details that require a larger effort. I&#8217;ll be describing what I&#8217;ve done to create the reports, but not really discuss about why or how to interpret the data. A discussion of some other data and what you can do with it can also be found <a target="_blank" href="http://blog.accurev.com/2007/11/30/arming-software-development-project-managers-with-real-data/trackback/">here</a>.</p>
<p>Here at AccuRev our projects are issue oriented. We use <a target="_blank" href="http://www.accurev.com/issue-tracking.html">AccuWork</a>, which is our own tightly integrated <a target="_blank" href="http://www.accurev.com/accuworkflow.html">issue management </a>environment.</p>
<p>Given that, and the goals for the reporting that I defined, I had to find a way for AccuWork to communicate information that BIRT could interpret. In the past using Excel, I&#8217;d simply query issues in AccuWork and export the data into an HTML table that Excel could then read in and, with the help of pivot tables, generate the desired reports. The basic information reported included:</p>
<ol>
<li>Number of issues per developer</li>
<li>Count of issues by priority per developer</li>
<li>Distribution of issue resolution (Whether issues are duplicates, regressions, cancelled, deferred, etc)</li>
<li>Distribution of issue severity (Whether issues are crashes, major implementations, cosmetic, etc)</li>
<li>Weekday issue completed per developer</li>
<li>Weekly Find rate vs. Fix rate</li>
<li>Weekly average number of days to complete issues</li>
</ol>
<p>Using this information, it is easy to see projects taper off to closure, as well gather some ideas as to how the developer workload was being distributed. Some developers cringe at this information, but I believe as long as it is used positively and to evenly distribute work, then everyone gains from reviewing this information.</p>
<p>With these same charts in mind, I loaded up my version of Eclipse, installed BIRT and its associated plugins, and started to figure out how to get the data into the tool.<span id="more-86"></span></p>
<p>BIRT provides a number of different data sources, from file based to database, to XML. While I would like a little more flexibility in the XML source, like the ability to preprocess data before usage, it provided me with the means to bring in issues from AccuWork, with a little external help. The first thing I needed to do was get the information from AccuWork.</p>
<p>I used &#8216;accurev xml -l getActiveIssues.xml&#8217;. The getActiveIssues.xml file I used looks like this:</p>
<blockquote>
<blockquote></blockquote>
</blockquote>
<p>&lt;acRequest&gt;</p>
<blockquote><p>&lt;issuelist show_active = &#8220;true&#8221;&gt;</p>
<blockquote><p>&lt;user&gt;myUser&lt;/user&gt;<br />
&lt;depot&gt;myDepot&lt;/depot&gt;<br />
&lt;stream1&gt;myProjectStream&lt;/stream1&gt;<br />
&lt;issues&gt;&lt;/issues&gt;</p></blockquote>
<p>&lt;/issuelist&gt;</p></blockquote>
<p>&lt;/acRequest&gt;</p>
<p>This tells AccuWork to return the active issues in the depot for the given stream. This will return a full description of the issues, with all the fields populated. This is where I would have liked a preprocessor. Instead I massaged the data myself, removing fields like description. It wasn&#8217;t necessary, but given the number of issues fixed it can improve performance when you generate your report.</p>
<p>With this information I was able to generate charts to answer the first four questions. Now I was left scratching my head on the next set, so I went back to the spreadsheet to see how I had solved this problem. I realized after importing the data into Excel, I had a number of columns that were computed values. Here BIRT shows some flexiblity, with its own computed columns.</p>
<p>I added the &lt;dateClosed&gt; field that is part of the issue description in AccuWork to the column mappings in BIRT, and created a computed column and used the following as the formula:</p>
<p>( row["dateClosed"] &#8211; ( row["dateClosed"]%(60*60*24*7) ) ) / (60*60*24*7)</p>
<p>AccuRev communicates information in seconds, so using this calculation I can compute the number of weeks since Jan 1, 1970 when a particular issue was closed. I did the same for dateSubmitted and dateCompleted. Finally, I created a computed column to determine the weekday completed using this formula:</p>
<p>(new String(&#8220;SunMonTueWedThuFriSat&#8221;).substr( <strong>(new Date(row["dateCompleted"]*1000)).getDay()</strong> *3, 3 ) )</p>
<p>This one is a little messy, so let&#8217;s break it down. Using the bolded section I compute the day of the week as a numeric value (zero based, starting with zero as Sunday). I then used this value to determine the substring as an offset in a fixed length string. Not so bad, and avoided the dreaded mid-processor (something sitting between AccuWork and BIRT) that I was afraid I would have to write.</p>
<p>So, using a single query from AccuWork, and computed columns in BIRT, I now have the data I need to generate the 7 charts I described earlier. Next time I&#8217;ll talk about what I had to do to get the information to chart in BIRT, and show some of the output.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/12/06/birt-and-accuwork/' addthis:title='Eclipse BIRT and AccuWork '  ><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/2007/12/06/birt-and-accuwork/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Developer Recipes: AccuRev + Eclipse + Ruby</title>
		<link>http://accurev.com/blog/2007/09/18/accurev-eclipse-ruby/</link>
		<comments>http://accurev.com/blog/2007/09/18/accurev-eclipse-ruby/#comments</comments>
		<pubDate>Tue, 18 Sep 2007 19:04:56 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse project]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/2007/09/18/accurev-eclipse-ruby/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/09/18/accurev-eclipse-ruby/' addthis:title='Developer Recipes: AccuRev + Eclipse + Ruby ' ><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>Related Recipes: AccuRev + JIRA + Eclipse (using Mylyn) Love Ruby? Use Eclipse? Got AccuRev? Here&#8217;s a recipe guaranteed to get the mixture setup&#8230; stirred, not shaken. Install Applications Install AccuRev 4.5. download. Follow the executable wizard. Install Eclipse 3.2. download. Follow the executable wizard. Install Ruby 1.8. download. Follow these instructions. Install AccuRev Plugin [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/09/18/accurev-eclipse-ruby/' addthis:title='Developer Recipes: AccuRev + Eclipse + Ruby '  ><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/2007/09/18/accurev-eclipse-ruby/' addthis:title='Developer Recipes: AccuRev + Eclipse + Ruby ' ><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 align="justify"><em>Related Recipes</em>: <a href="http://blog.accurev.com/2008/04/09/developer-recipes-accurev-jira-eclipse-using-mylyn/" target="_blank">AccuRev + JIRA + Eclipse (using Mylyn)</a></p>
<p align="justify">Love <a title="Ruby Programming Language" href="http://www.ruby-lang.org/en/" target="_blank">Ruby</a>? Use <a title="Eclipse IDE" href="http://www.eclipse.org/" target="_blank">Eclipse</a>? Got <a title="AccuRev Process-Centric SCM" href="http://www.accurev.com" target="_blank">AccuRev</a>? Here&#8217;s a recipe guaranteed to get the mixture setup&#8230; stirred, not shaken.</p>
<p align="justify"><a href="http://blog.accurev.com/2008/04/09/developer-recipes-accurev-jira-eclipse-using-mylyn/" target="_blank"></a></p>
<p align="justify"><span style="color:#ff0000"><strong>Install Applications</strong></span></p>
<ol>
<li><strong>Install AccuRev 4.5</strong>. <a title="Download AccuRev" href="http://www.accurev.com/download.htm">download</a>. Follow the executable wizard.</li>
<li><strong>Install Eclipse 3.2</strong>. <a title="Download Eclipse" href="http://www.eclipse.org/downloads/">download</a>. Follow the executable wizard.</li>
<li><strong>Install Ruby 1.8</strong>. <a title="Download Ruby" href="http://www.ruby-lang.org/en/">download</a>. Follow these <a title="Install Ruby" href="http://www.ruby-lang.org/en/downloads/">instructions</a>.</li>
</ol>
<p align="justify"><span style="color:#ff0000"><strong>Install AccuRev Plugin in Eclipse</strong></span></p>
<ol>
<li>Help &#8211;&gt; Software Updates &#8211;&gt; Find/Install</li>
<li>Select &#8216;Seach for new features to install&#8217;</li>
<li>Create &#8216;New Remote Site&#8217; named <em>AccuRev </em>with URL <em>http://www.accurev.com/download/eclipseupdate</em></li>
<li>Checkbox &#8216;AccuRev&#8217; and select Finish</li>
</ol>
<p align="justify"><span style="color:#ff0000"><strong>Install Ruby Plugin in Eclipse</strong></span></p>
<ol>
<li>Help &#8211;&gt; Software Updates &#8211;&gt; Find/Install</li>
<li>Select &#8216;Search for new features to install&#8217;</li>
<li>Create &#8216;New Remote Site&#8217; named <em>Ruby </em>with URL <em>http://updatesite.rubypeople.org/release</em></li>
<li>Checkbox &#8216;Ruby&#8217; and select Finish</li>
</ol>
<p align="justify"><strong>Lets Rock! </strong>Now that the software is installed, lets put it to work. Here are three use-cases depending on how you need to work on your project.</p>
<p align="justify"><span style="color:#3366ff"><strong><span style="text-decoration:underline">Use Case</span>: New Eclipse project / New AccuRev workspace</strong></span><span style="color:#3366ff">.</span> Starting from scratch? Have ruby code already in a depot? Do you know which stream configuration you want to work from? Then this is for you&#8230;</p>
<ul>
<li>File &#8211;&gt; New &#8211;&gt; Project &#8211;&gt; AccuRev &#8211;&gt; Checkout from AccuRev</li>
<li>Choose &#8220;Create new AccuRev workspace and Eclipse project&#8221;</li>
<li>Follow the wizard to specify depot/stream/project/workspace names and directory location. Select &#8216;simple project&#8217; when prompted for project type.</li>
<li>Select project in navigator. Project &#8211;&gt; Add Ruby Nature. <em>This will declare the project as a ruby project.</em></li>
</ul>
<p align="justify"><span style="color:#3366ff"><strong><span style="text-decoration:underline">Use Case</span>: New Eclipse Project / Existing AccuRev workspace</strong></span><span style="color:#3366ff">.</span> Already have an AccuRev workspace with your ruby code? Just need to setup a new eclipse project? Then this is for you&#8230;</p>
<ul>
<li>File &#8211;&gt; New &#8211;&gt; Project &#8211;&gt; AccuRev &#8211;&gt; Checkout from AccuRev</li>
<li>Choose &#8220;Create new Eclipse project in existing AccuRev workspace&#8221;</li>
<li>Follow the wizard to select the workspace and name the project. Select &#8216;simple project&#8217; when prompted for project type.</li>
<li><em>Optionally</em>, the project may need to be declared a &#8216;ruby project&#8217;. This may already have been done. Either way, select project in navigator. Project &#8211;&gt; Add Ruby Nature.</li>
</ul>
<p align="justify"><span style="color:#3366ff"><strong><span style="text-decoration:underline">Use Case</span>: Existing Eclipse Project / Existing AccuRev workspace</strong></span><span style="color:#3366ff">. </span>Already have an eclipse ruby project? Is your project already on disk in an AccuRev workspace? Then this is for you&#8230;</p>
<ul>
<li>File &#8211;&gt; Import &#8211;&gt; General &#8211;&gt; Existing Projects into Workspace</li>
<li>Select AccuRev workspace directory containing the Eclipse .project file</li>
<li>Checkbox the projects found then &#8220;Finish&#8221;</li>
<li>Setup AccuRev for the project with: RClick Project &#8211;&gt; Team &#8211;&gt; Share &#8211;&gt; AccuRev</li>
</ul>
<p align="justify">Test either Use Case by creating a new Ruby Class. If you don&#8217;t get any errors, so far so good. Otherwise, if the ruby nature is not set, the new class wizard will warn you when you enter the class name. Now verify the new class shows up in Team &#8211;&gt; AccuRev Searches &#8211;&gt; External search view. This verifies that AccuRev is connected.</p>
<p align="justify">I hope this batch of recipes helps you get up and running flawlessly with AccuRev + Eclipse + Ruby in no time!</p>
<p align="justify">For those new to Ruby+Eclipse, our friends at IBM have a great <a title="Ruby + Eclipse" href="http://www-128.ibm.com/developerworks/opensource/library/os-rubyeclipse/" target="_blank">tutorial</a>. Also, the folks at O&#8217;Reilly have a great <a title="Rails + Eclipse" href="http://www.oreillynet.com/pub/a/ruby/2007/04/26/ruby-on-rails-meets-eclipse.html" target="_blank">article </a>about using Rails+Eclipse.</p>
<p align="justify">/happy coding/ &#8211; dave</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/09/18/accurev-eclipse-ruby/' addthis:title='Developer Recipes: AccuRev + Eclipse + Ruby '  ><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/2007/09/18/accurev-eclipse-ruby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

