<?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>Atlassian Blogs</title>
	<atom:link href="http://blogs.atlassian.com/blog-cat/clover/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.atlassian.com</link>
	<description>Software development and collaboration tools</description>
	<lastBuildDate>Mon, 17 Jun 2013 16:05:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Clover Goes Mobile!</title>
		<link>http://blogs.atlassian.com/2012/11/eclipse-plugin-android-clover-code-coverage-continuous-integration/</link>
		<comments>http://blogs.atlassian.com/2012/11/eclipse-plugin-android-clover-code-coverage-continuous-integration/#comments</comments>
		<pubDate>Mon, 05 Nov 2012 16:02:39 +0000</pubDate>
		<dc:creator>Marek Parfianowicz</dc:creator>
				<category><![CDATA[Bamboo]]></category>
		<category><![CDATA[Clover]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[automated testing]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[mobile development]]></category>

		<guid isPermaLink="false">http://blogs.atlassian.com/?p=23316</guid>
		<description><![CDATA[The Android market is rapidly increasing, being one of the most popular platforms, not only for customers, but also as a platform for developers to create their apps. Just few numbers: Google Play just hit 25 billion downloads in total (15 billion downloads in the last year) over 670,000 applications available on Google Play over 100&#8217;000 registered developers on Google Play over 500 million activations of Android devices, 1.3 million being added every day Taking into account this rapidly increasing popularity we have decided to take one of our ShipIt prototypes, make some polishing and bug fixing and publish it as an alpha version of the&#8230; Clover-for-Android Plugin for Eclipse! It offers you an Eclipse IDE where: you can integrate your Android projects written in Java with Clover in just a few clicks, you can get code coverage from unit test execution as well as from manual tests - both from emulator and real devices, you can explore results and focus on most important code sections using Clover&#8217;s fantastic reports like Coverage Explorer, Test Run Explorer, Clover Dashboard, Cloud Map, Tree Map you can export HTML / XML / PDF reports. Feel free to try it! We&#8217;re waiting for your feedback! Learn More]]></description>
				<content:encoded><![CDATA[<p id="CloverforAndroidblogpostdraft-Clovergoesmobile"><a href="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/shipIt_days_large1.png" rel="lightbox[23316]" title="shipIt_days_large"><img class="alignright size-full wp-image-23318" title="shipIt_days_large" src="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/shipIt_days_large1.png" alt="" width="150" height="150" /></a>The Android market is rapidly increasing, being one of the most popular platforms, not only for customers, but also as a platform for developers to create their apps. Just few numbers:</p>
<ul>
<li>Google Play just hit 25 billion downloads in total (15 billion downloads in the last year)</li>
<li>over 670,000 applications available on Google Play</li>
<li>over 100&#8217;000 registered developers on Google Play</li>
<li>over 500 million activations of Android devices, 1.3 million being added every day</li>
</ul>
<p>Taking into account this rapidly increasing popularity we have decided to take one of our <a href="https://www.atlassian.com/company/about/shipit" rel="nofollow">ShipIt</a> prototypes, make some polishing and bug fixing and publish it as an alpha version of the&#8230;</p>
<h2 id="CloverforAndroidblogpostdraft-Clover-for-Android">Clover-for-Android Plugin for Eclipse!</h2>
<p>It offers you an Eclipse IDE where:</p>
<ul>
<li>you can integrate your Android projects written in Java with Clover in just a few clicks,</li>
<li>you can get code coverage from <em><strong>unit test</strong> </em>execution as well as from <em><strong>manual tests</strong> - </em>both from emulator and real devices,</li>
<li>you can explore results and focus on most important code sections using Clover&#8217;s fantastic reports like Coverage Explorer, Test Run Explorer, Clover Dashboard, Cloud Map, Tree Map</li>
<li>you can export HTML / XML / PDF reports.</li>
</ul>
<p><a href="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/android_unit_tests_clover.png" rel="lightbox[23316]" title="android_unit_tests_clover"><img class="aligncenter size-large wp-image-23319" title="android_unit_tests_clover" src="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/android_unit_tests_clover-600x290.png" alt="" width="600" height="290" /></a></p>
<p>Feel free to try it! We&#8217;re waiting for your feedback!</p>
<p style="text-align: center;"><a class="wac-button" style="display: inline-block; background-color: #9fc71c; border: 1px solid #99c019; border-bottom: 1px solid #89b413; border-radius: 6px; box-shadow: inset 0 1px 0 0 #c3dc71; color: #fff; font-size: 18px; font-family: kulturista-web-1,Helvetica,Arial,Verdana,sans-serif; text-decoration: none; text-shadow: 0px 1px 2px #779908; padding: 7px 15px 8px;" href="https://confluence.atlassian.com/display/CLOVER/Clover-for-Android"><span style="display: block; border-radius: 6px; cursor: pointer; padding-right: 25px; background: url('http://atlassian.wpengine.netdna-cdn.com/wp-content/themes/atlassian/images/buttonArrow.png') no-repeat center right;">Learn More</span></a></p>
 <img src="http://blogs.atlassian.com/?feed-stats-post-id=23316" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.atlassian.com/2012/11/eclipse-plugin-android-clover-code-coverage-continuous-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aggregated code coverage using Maven, Clover and Bamboo</title>
		<link>http://blogs.atlassian.com/2012/07/bamboo-maven-clover-aggregated-code-coverage/</link>
		<comments>http://blogs.atlassian.com/2012/07/bamboo-maven-clover-aggregated-code-coverage/#comments</comments>
		<pubDate>Mon, 23 Jul 2012 14:00:45 +0000</pubDate>
		<dc:creator>Sarah Goff-Dupont</dc:creator>
				<category><![CDATA[Bamboo]]></category>
		<category><![CDATA[Clover]]></category>
		<category><![CDATA[code coverage]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[development tools]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://blogs.atlassian.com/?p=22229</guid>
		<description><![CDATA[This is a guest post from Alex Van Boxel, Software Engineer working at Alcatel-Lucent Antwerp. His pet interests within software are to keep the quality high, smooth running builds and the engineers productive. He believes having the complete Atlassian tool-chain certainly helps. &#160; Finally we got it working&#8230; we wanted to know what our total test coverage was on our product with all the effort we did over the last year by adding new tests. It wasn&#8217;t easy because once you leave the path of simple unit testing you come in the terrain of multi-server setups. With multiple server it&#8217;s not easy anymore too collect all your metrics and get a descent report. But we pulled it off. So here&#8217;s our story. We&#8217;re using the complete tool chain of Atlassian, so this story involves their tools. In this case Clover (the code coverage tool), Bamboo (Continues Integration server) and Maven (as out build tool). Let&#8217;s start with Clover. Clover is quite a clever coverage tool. It integrates in your build tool to create a special version of your product. It changes the source by injecting code to do the instrumentation. At the same time it will build a database with a collection of all the methods that are instrumented. With the special build of your product and the database it will collect metrics while your tests are running. So with a single Maven command line we had a complete coverage report of our unit tests. But the tight integration with our build tool comes at a price. That price is not knowing what magic is going on behind the screen. And you need to know how everything fits together whenever you want to get more out of your tools. And that&#8217;s what we wanted&#8230; Let&#8217;s start at the beginning and start building our instrumented server. Building the instrumented server As I said, the Clover plugin for Maven does a lot a magic and after a normal Clover maven build you get a nice report of what the code coverage is of your unit tests. Getting this into Bamboo (our integration server) is easy. Start a source code checkout, do the clover maven build as you would on the commandline and publish the report as an artifact. Set this up first before you go any further. This will be the basis for our next phase and will already provide some usefull insights. Then it&#8217;s time to think about what we need if we want to get metrics on our server running on different machines. Lets have a look at the components. Our instrumented product. Thats the easy part, your instrumented server will be located at the usual place in your maven project after a build. Just make sure that you don&#8217;t deploy this special version to your local or remote repository, so limit yourself to package (this still runs the unit tests). This special build needs the clover.jar to be present on the application server. In our jboss server it&#8217;s enought that it&#8217;s present in the lib folder. Make [...]]]></description>
				<content:encoded><![CDATA[<blockquote><p><a href="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/square_me.jpg" rel="lightbox[22229]" title="square_me"><img class="alignleft  wp-image-22319" title="square_me" alt="" src="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/square_me-150x150.jpg" width="84" height="84" /></a>This is a guest post from Alex Van Boxel, Software Engineer working at Alcatel-Lucent Antwerp. His pet interests within software are to keep the quality high, smooth running builds and the engineers productive. He believes having the complete Atlassian tool-chain <wbr />certainly helps.</p></blockquote>
<p>&nbsp;</p>
<p>Finally we got it working&#8230; we wanted to know what our total <a href="http://www.atlassian.com/test-automation?tab=test-automation-basics#tour" target="_blank">test coverage</a> was on our product with all the effort we did over the last year by adding new tests. It wasn&#8217;t easy because once you leave the path of simple unit testing you come in the terrain of multi-server setups. With multiple server it&#8217;s not easy anymore too collect all your metrics and get a descent report. But we pulled it off. So here&#8217;s our story.</p>
<p><a href="https://openalex.files.wordpress.com/2012/01/clover_plan.png" rel="lightbox[22229]" title="clover_plan"><img class="alignright  wp-image-80" title="clover_plan" alt="" src="https://openalex.files.wordpress.com/2012/01/clover_plan.png" width="154" height="176" /></a>We&#8217;re using the complete tool chain of Atlassian, so this story involves their tools. In this case Clover (the code coverage tool), Bamboo (Continues Integration server) and Maven (as out build tool). Let&#8217;s start with Clover. Clover is quite a clever coverage tool. It integrates in your build tool to create a special version of your product. It changes the source by injecting code to do the instrumentation. At the same time it will build a database with a collection of all the methods that are instrumented. With the special build of your product and the database it will collect metrics while your tests are running. So with a single Maven command line we had a complete coverage report of our unit tests.</p>
<p>But the tight integration with our build tool comes at a price. That price is not knowing what magic is going on behind the screen. And you need to know how everything fits together whenever you want to get more out of your tools. And that&#8217;s what we wanted&#8230; Let&#8217;s start at the beginning and start building our instrumented server.</p>
<h2>Building the instrumented server</h2>
<p><a href="https://openalex.files.wordpress.com/2012/01/clover_sharedartifacts.png" rel="lightbox[22229]" title="clover_sharedartifacts"><img class="alignleft  wp-image-81" title="clover_sharedartifacts" alt="" src="https://openalex.files.wordpress.com/2012/01/clover_sharedartifacts.png" width="336" height="150" /></a>As I said, the Clover plugin for Maven does a lot a magic and after a normal Clover maven build you get a nice report of what the code coverage is of your unit tests. Getting this into Bamboo (our integration server) is easy. Start a source code checkout, do the clover maven build as you would on the commandline and publish the report as an artifact. Set this up first before you go any further. This will be the basis for our next phase and will already provide some usefull insights. Then it&#8217;s time to think about what we need if we want to get metrics on our server running on different machines. Lets have a look at the components.</p>
<p>Our instrumented product. Thats the easy part, your instrumented server will be located at the usual place in your maven project after a build. Just make sure that you don&#8217;t deploy this special version to your local or remote repository, so limit yourself to package (this still runs the unit tests).</p>
<p>This special build needs the clover.jar to be present on the application server. In our jboss server it&#8217;s enought that it&#8217;s present in the lib folder. Make sure to look at the server logs when you deploy your ears. If you find clover related NoSuchMethod exception the jar is in the wrong place.<br />
Last thing we need to get on the server is the clover.db, without this database you will not get eny metrics.</p>
<p>The last component we need to worry about is how to get the instrumentation metrics in a consistent manner so we can get it easily from the remote server back to our Bamboo agent for later processing.</p>
<p>Looking at the list, the biggest problem is the clover.db, by default each maven module within a maven project has it&#8217;s own database. This would be a pain if we wanted to distribute those to a different server. Luckily we can force clover to build a single database by providing a path to the database. Although this had the strange effect that the report was generated in an unstable location (it&#8217;s actually the last module in the maven reactor). But you can force the report path as well. Here is an example of the modification in our parent pom:</p>
<pre>&lt;properties&gt;</pre>
<pre>  &lt;clover.version&gt;3.1.0&lt;/clover.<wbr />version&gt;</pre>
<pre>  &lt;clover.liclocation&gt;/opt/<wbr />clover.license&lt;/clover.<wbr />liclocation&gt;</pre>
<pre>  &lt;clover.databasepath&gt;/opt/<wbr />work/clover/example&lt;/clover.<wbr />databasepath&gt;</pre>
<pre>  &lt;clover.reportpath&gt;${clover.<wbr />databasePath}&lt;/clover.<wbr />reportpath&gt;</pre>
<pre>  &lt;clover.enabled&gt;false&lt;/clover.<wbr />enabled&gt;</pre>
<pre>&lt;/properties&gt;</pre>
<pre>...</pre>
<pre>&lt;build&gt;</pre>
<pre>  &lt;plugins&gt;</pre>
<pre>    &lt;plugin&gt;</pre>
<pre>      &lt;groupid&gt;com.atlassian.maven.<wbr />plugins&lt;/groupid&gt;</pre>
<pre>      &lt;artifactid&gt;maven-clover2-<wbr />plugin&lt;/artifactid&gt;</pre>
<pre>      &lt;version&gt;${clover.version}&lt;/<wbr />version&gt;</pre>
<pre>      &lt;configuration&gt;</pre>
<pre>        &lt;licenselocation&gt;${clover.<wbr />licLocation}&lt;/licenselocation&gt;</pre>
<pre>        &lt;cloverdatabase&gt;${clover.<wbr />dbPath}/db/clover.db&lt;/<wbr />cloverdatabase&gt;</pre>
<pre>        &lt;historydir&gt;${clover.dbPath}/<wbr />history&lt;/historydir&gt;</pre>
<pre>        &lt;includetestsourceroots&gt;false&lt;<wbr />/includetestsourceroots&gt;</pre>
<pre>        &lt;excludes&gt;</pre>
<pre>          &lt;exclude&gt;com\example\**\*&lt;/<wbr />exclude&gt;</pre>
<pre>        &lt;/excludes&gt;</pre>
<pre>      &lt;/configuration&gt;</pre>
<pre>    &lt;/plugin&gt;</pre>
<pre>  &lt;/plugins&gt;</pre>
<pre>&lt;/build&gt;</pre>
<pre>...</pre>
<pre>&lt;reporting&gt;</pre>
<pre>  &lt;plugins&gt;</pre>
<pre>    &lt;plugin&gt;</pre>
<pre>      &lt;groupid&gt;com.atlassian.maven.<wbr />plugins&lt;/groupid&gt;</pre>
<pre>      &lt;artifactid&gt;maven-clover2-<wbr />plugin&lt;/artifactid&gt;</pre>
<pre>      &lt;configuration&gt;</pre>
<pre>        &lt;licenselocation&gt;${clover.<wbr />licLocation}&lt;/licenselocation&gt;</pre>
<pre>        &lt;cloverdatabase&gt;${clover.<wbr />databasePath}/db/clover.db&lt;/<wbr />cloverdatabase&gt;</pre>
<pre>        &lt;historydir&gt;${clover.<wbr />databasePath}/history&lt;/<wbr />historydir&gt;</pre>
<pre>        &lt;outputdirectory&gt;${clover.<wbr />reportPath}/clover-report&lt;/<wbr />outputdirectory&gt;</pre>
<pre>        &lt;excludes&gt;</pre>
<pre>          &lt;exclude&gt;com\example\**\*&lt;/<wbr />exclude&gt;</pre>
<pre>        &lt;/excludes&gt;</pre>
<pre>      &lt;/configuration&gt;</pre>
<pre>    &lt;/plugin&gt;</pre>
<pre>  &lt;/plugins&gt;</pre>
<pre>&lt;/reporting&gt;</pre>
<p>&nbsp;</p>
<p>The most importing thing to note here is the database path. This is a shared location we create that is available on each Bamboo agent. The user that the agents are running with need to have access to that location, so don&#8217;t forget to set the correct access rights. This location is outside of the normal Bamboo working directory because we&#8217;re going to manage it ourselves. It&#8217;s that working location that we are going to replicate on our test servers as well.</p>
<p>To create the first job of our master plan, we started out with our normal maven clover build. The build, with our adaptations, already produces the database, the instrumented server and the metrics of the unit test. Now we only need to add scripts to manage our central location. A cool feature of Bamboo is it&#8217;s task infrastructure. A job can comprise out of different tasks, as jobs can run in parallel, tasks will run sequential within a job. A lot of task types are provided or you write your own. One of the tasks that&#8217;s used here is the inline script task. Very useful for prototyping your CI build and you still can decide to later put the script in your source repository (Bamboo is able to do multiple source checkouts within one job) as the checkout is modeled as a task. Our pre-clover maven build prepares our shared location, basically cleaning up leftovers and recreating the structure we need.</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db<br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> clover-db<br />
<span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db clover-db</div></div>
<p>Next task in our &#8220;Build Instrumented Server&#8221; job is running maven. Always start cleaning everything, followed by clover2:setup which will build the database and modify the source code. Then do a package, that will build the server, run the unit tests and output the metrics.  Finally the clover2:clover will generate the report of the unit test part.</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">clean clover2:setup package clover2:clover -Dclover.reportPath=<span style="color: #800000;">${bamboo.build.working.directory}</span></div></div>
<p>The nice side effect off having the single clover db is that all the metrics are saved at that location as well. That makes it easy to create the post execute script. The script is another inline Bamboo task that removes the database and tar&#8217;s the data in a single file.</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># Remove old data</span><br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> clover-instr.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> clover-instr<br />
<span style="color: #666666; font-style: italic;"># Copy from symbolic link, and delete clover.db</span><br />
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-RL</span> clover-db clover-instr<br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> clover-instr<span style="color: #000000; font-weight: bold;">/</span>clover.db<br />
<span style="color: #666666; font-style: italic;"># Archive and compress</span><br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> cvzf clover-instr.tar.gz clover-instr<span style="color: #000000; font-weight: bold;">/</span></div></div>
<p>Finally we publish the clover database, instrumented ears and the metrics as a shared artifact that will be used in a later stage.</p>
<h2>Running the integration tests</h2>
<p><a href="https://openalex.files.wordpress.com/2012/01/clover_tasks.png" rel="lightbox[22229]" title="clover_tasks"><img class="alignright  wp-image-82" title="clover_tasks" alt="" src="https://openalex.files.wordpress.com/2012/01/clover_tasks.png" width="336" height="207" /></a>Stage two in our plan is running the different test suites. The different stages are jobs grouped together in a single stage. That makes it possible to run the tests concurrently on different agents. Building the job for the integration test can get a bit tricky. Not only are their 2 machines that come into play, now we need the use the instrumented server and the clover database as well.</p>
<p>As the clover.db and the instrumented server are published in the previous stage they are available to all the next stages. We only need to specify the artifacts we are interested in the location where we like to have them. When we got our artifacts we can use them in our task. Here is the list of tasks we have in one of our jobs:</p>
<ol>
<li>Checkout the server. Needed for generating the scoped report after the run.</li>
<li>Checkout the test suite, in a sub-directory so it doesn&#8217;t conflict with the server.</li>
<li>Inline script to cleanup old data, create a mirror of our working directory on the remote server, install the instrumented server and the clover.db on the remote server.</li>
<li>Maven build that runs the integration run.</li>
<li>Inline script to get the metrics back from our remote server to our agents.</li>
<li>Maven build that uses the metric and our server source code checkout to generate a report (scope to these tests).</li>
<li>Script to remove the clover.db from our working directory and pack the metrics data in a tar (just like in our server build).</li>
</ol>
<p>Quite a number of tasks. Lets show one of them in detail. The inline script we&#8217;re showing here is the script that prepares everything and sends everything to the remote server.</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># Remove all old Clover data</span><br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db<br />
<br />
<span style="color: #666666; font-style: italic;"># Recreate symbolic links</span><br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> clover-db<br />
<span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db clover-db<br />
<br />
<span style="color: #666666; font-style: italic;"># Unpack clover database</span><br />
<span style="color: #c20cb9; font-weight: bold;">cp</span> ext<span style="color: #000000; font-weight: bold;">/</span>clover-db<span style="color: #000000; font-weight: bold;">/*</span> clover-db<br />
<br />
<span style="color: #666666; font-style: italic;"># Prepare and send instrumented server</span><br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> deploy<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> deploy<br />
<span style="color: #c20cb9; font-weight: bold;">find</span> .<span style="color: #000000; font-weight: bold;">/</span>ext<span style="color: #000000; font-weight: bold;">/</span>server <span style="color: #660033;">-iname</span> <span style="color: #ff0000;">'example*.ear'</span> <span style="color: #660033;">-exec</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> \<span style="color: #7a0874; font-weight: bold;">&#123;</span>\<span style="color: #7a0874; font-weight: bold;">&#125;</span> deploy \;<br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> c deploy <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #660033;">-i</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>secure<span style="color: #000000; font-weight: bold;">/</span>qa-fat.private root<span style="color: #000000; font-weight: bold;">@</span>qa-fat <span style="color: #c20cb9; font-weight: bold;">tar</span> x <span style="color: #660033;">-C</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span><br />
<br />
<span style="color: #666666; font-style: italic;"># copy clover db</span><br />
<span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #660033;">-i</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>secure<span style="color: #000000; font-weight: bold;">/</span>qa-fat.private root<span style="color: #000000; font-weight: bold;">@</span>qa-fat <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db<br />
<span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #660033;">-i</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>secure<span style="color: #000000; font-weight: bold;">/</span>qa-fat.private root<span style="color: #000000; font-weight: bold;">@</span>qa-fat <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db<br />
<span style="color: #c20cb9; font-weight: bold;">scp</span> <span style="color: #660033;">-i</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>secure<span style="color: #000000; font-weight: bold;">/</span>qa-fat.private <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db<span style="color: #000000; font-weight: bold;">/</span>clover.db root<span style="color: #000000; font-weight: bold;">@</span>qa-fat:<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db<span style="color: #000000; font-weight: bold;">/</span></div></div>
<p>The rest of the scripts are trivial, just collect the data from the remote server and continue. Don&#8217;t forget to setup your remote server by adding the clover.jar to the libraries of your app server and add a VM parameter to tell clover where to find the database -Dclover.initstring.basedir = /opt/work/clover/example/db. The other test suites have similar setups, so we&#8217;re thinking about adding the scripts to a small git repo, so they can be reused in different jobs, with an extra checkout.</p>
<h2>Creating the aggregated report</h2>
<p><a href="https://openalex.files.wordpress.com/2012/01/clover_artifacts.png" rel="lightbox[22229]" title="clover_artifacts"><img class="alignleft  wp-image-83" title="clover_artifacts" alt="" src="https://openalex.files.wordpress.com/2012/01/clover_artifacts.png" width="336" height="209" /></a>The final stage is not that difficult. In this stage we want to collect all the information collect throughout the previous stages. Again we use the artifacts shared by the previous stages, put them in the desired place and start a script to unpack them alongside the clover database. Because the metric data file names are always unique they will not clash with the files produced on the other machines. So we only need to place them in one place and start the maven clover report build again but now on all the metrics (unit-, api- and ui tests). Here&#8217;s a example of what the unpack script could look like:</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># Remove all old Clover data</span><br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db<br />
<br />
<span style="color: #666666; font-style: italic;"># Recreate symbolic links</span><br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> clover-db<br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> clover-instr<br />
<span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db clover-db<br />
<span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>work<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span>db clover-instr<br />
<br />
<span style="color: #666666; font-style: italic;"># Unpack instrumentation data</span><br />
<span style="color: #c20cb9; font-weight: bold;">cp</span> ext<span style="color: #000000; font-weight: bold;">/</span>clover-db<span style="color: #000000; font-weight: bold;">/*</span> clover-db<br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf ext<span style="color: #000000; font-weight: bold;">/</span>instr<span style="color: #000000; font-weight: bold;">/</span>unit<span style="color: #000000; font-weight: bold;">/</span>clover-instr.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf ext<span style="color: #000000; font-weight: bold;">/</span>instr<span style="color: #000000; font-weight: bold;">/</span>api<span style="color: #000000; font-weight: bold;">/</span>clover-instr.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf ext<span style="color: #000000; font-weight: bold;">/</span>instr<span style="color: #000000; font-weight: bold;">/</span>ui<span style="color: #000000; font-weight: bold;">/</span>clover-instr.tar.gz</div></div>
<h2>Conclusion</h2>
<p>Creating this plan took a while, but I think the information you can collect from the code coverage is worth the cost. With this information we can adapt our test plan to write extra tests for the code that&#8217;s not covered and we thought we did. A special thanks to Francois and Bert for dedicating some of their time to make this plan possible.</p>
<blockquote><p>&#8230;And an extra-special thanks to Alex for sharing all this hard-earned knowledge!  Got a how-to blog post involving Atlassian dev tools that you&#8217;d like to share?  Drop a comment here or hit us up on Twitter at @AtlDevTools.  It&#8217;s all about community, baby!</p>
<p style="text-align: center;"><a class="wac-button" style="display: inline-block; background-color: #9fc71c; border: 1px solid #99c019; border-bottom: 1px solid #89b413; border-radius: 6px; box-shadow: inset 0 1px 0 0 #c3dc71; color: #fff; font-size: 18px; font-family: kulturista-web-1,Helvetica,Arial,Verdana,sans-serif; text-decoration: none; text-shadow: 0px 1px 2px #779908; padding: 7px 15px 8px;" href="http://www.atlassian.com/jenkins-import-bamboo"><span style="display: block; border-radius: 6px; cursor: pointer; padding-right: 25px; background: url('http://atlassian.wpengine.netdna-cdn.com/wp-content/themes/atlassian/images/buttonArrow.png') no-repeat center right;">Not using Bamboo? Learn about easy import from Jenkins</span></a></p>
</blockquote>
 <img src="http://blogs.atlassian.com/?feed-stats-post-id=22229" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.atlassian.com/2012/07/bamboo-maven-clover-aggregated-code-coverage/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NASA&#8217;s Jet Propulsion Lab Launches Atlassian Into Space</title>
		<link>http://blogs.atlassian.com/2012/05/nasa-atlassian-development-tools/</link>
		<comments>http://blogs.atlassian.com/2012/05/nasa-atlassian-development-tools/#comments</comments>
		<pubDate>Mon, 14 May 2012 18:38:48 +0000</pubDate>
		<dc:creator>Sarah Goff-Dupont</dc:creator>
				<category><![CDATA[Bamboo]]></category>
		<category><![CDATA[Clover]]></category>
		<category><![CDATA[Confluence]]></category>
		<category><![CDATA[Fisheye/Crucible]]></category>
		<category><![CDATA[GreenHopper]]></category>
		<category><![CDATA[JIRA]]></category>
		<category><![CDATA[Fisheye]]></category>

		<guid isPermaLink="false">http://blogs.atlassian.com/?p=21361</guid>
		<description><![CDATA[NASA&#8217;s Jet Propulsion Laboratory (JPL) uses a host of Atlassian products to build the software used for flight mission planning as well as modeling data sent back from satellites and Mars rovers. I sat down with David Mittman, lead software developer and &#8220;default Atlassian guy&#8221; at JPL to get a closer look at what they&#8217;re up to. JPL was founded in the 1930s as a place to test new rocket technologies, and—after the creation of NASA in 1958—was chartered with developing the robotic spacecraft needed to explore our solar system. These high-profile programs include the ongoing Voyager mission (which is currently traveling beyond our solar system), the Ulysses solar mission, and the Pathfinder rovers sent to Mars in the 1990s &#8211;and that’s just a tiny fraction. JPL also has an Earth-observing program for tracking weather and climate change using robotic observers in space. “We are constantly developing new technologies for exploring space,” says Mittman. Over the next hour, he backed that statement up with example after mind-boggling example. A Truly &#8220;Ensemble&#8221; Cast Developing part of the vast amount of software that allows humans on Earth to operate this panoply of unmanned explorers is a joint effort between JPL in Pasadena, CA, the Ames Research Center near San Francisco, and the Johnson Space Center in Houston. To make this all as efficient as possible (these are our tax dollars at work, after all…), they have created a project called Ensemble to solve the common problems they face such as mission planning, parsing the raw scientific data sent back, and compiling visual maps to represent an explorer’s traverse. So Ensemble is all about collaboration across disparate geographical areas, which is what led them to the Atlassian ecosystem. “We need an infrastructure to let us develop it efficiently,” Mittman explains “and we’re using Atlassian products.” Their collection currently includes JIRA, GreenHopper, Confluence, Bamboo, FishEye and Clover &#8211;which are largely suitable for even JPL&#8217;s crazy-advanced purposes right out of the box. Notably absent from that list is Crucible. “We do a lot of pair programming, so code reviews are conducted up front…We may add it as collaboration between the three teams increases.” Fair enough. At present, Ensemble’s biggest project is a Mars rover named “Curiosity,” launched in November 2011 and due to touch down on the red planet this August. Curiosity is an unmanned science lab which will use rock-evaporating lasers, camera/spectrometer hybrids, and high definition stereo cameras to investigate whether it’s landing region could (or did in the past) support microbial life. It will also help scientists understand the radiation environment on Mars in preparation for eventual human missions there, targeted within the next 10-15 years. As with the Spirit and Opportunity rovers currently calling Mars home, data collected by Curiosity will be sent back to Earth once a day, around the time of the Martian sunset. (Being solar-powered, the rovers are field geologists by day, and happy slumberers by night.) Using Ensemble and a transient, cloud-like computing hive of “about a thousand CPUs,” Curiosity’s operators will crunch through the day’s data, and within a few hours, send [...]]]></description>
				<content:encoded><![CDATA[<div id="attachment_21390" class="wp-caption alignright" style="width: 214px"><a href="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/astronaut.jpg" rel="lightbox[21361]" title="astronaut"><img class="size-medium wp-image-21390" title="astronaut" src="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/astronaut-204x300.jpg" alt="" width="204" height="300" /></a><p class="wp-caption-text">Image courtesy of NASA</p></div>
<p>NASA&#8217;s Jet Propulsion Laboratory (JPL) uses a host of Atlassian products to build the software used for flight mission planning as well as modeling data sent back from satellites and Mars rovers. I sat down with David Mittman, lead software developer and &#8220;default Atlassian guy&#8221; at JPL to get a closer look at what they&#8217;re up to.</p>
<p>JPL was founded in the 1930s as a place to test new rocket technologies, and—after the creation of NASA in 1958—was chartered with developing the robotic spacecraft needed to explore our solar system. These high-profile programs include the ongoing Voyager mission (which is currently traveling beyond our solar system), the Ulysses solar mission, and the Pathfinder rovers sent to Mars in the 1990s &#8211;and that’s just a tiny fraction. JPL also has an Earth-observing program for tracking weather and climate change using robotic observers in space. “We are constantly developing new technologies for exploring space,” says Mittman. Over the next hour, he backed that statement up with example after mind-boggling example.</p>
<h2>A Truly &#8220;Ensemble&#8221; Cast</h2>
<p>Developing part of the vast amount of software that allows humans on Earth to operate this panoply of unmanned explorers is a joint effort between JPL in Pasadena, CA, the Ames Research Center near San Francisco, and the Johnson Space Center in Houston. To make this all as efficient as possible (these are our tax dollars at work, after all…), they have created a project called Ensemble to solve the common problems they face such as mission planning, parsing the raw scientific data sent back, and compiling visual maps to represent an explorer’s traverse.</p>
<p>So Ensemble is all about collaboration across disparate geographical areas, which is what led them to the Atlassian ecosystem. “We need an infrastructure to let us develop it efficiently,” Mittman explains “and we’re using Atlassian products.” Their collection currently includes JIRA, GreenHopper, Confluence, Bamboo, FishEye and Clover &#8211;which are largely suitable for even JPL&#8217;s crazy-advanced purposes right out of the box. Notably absent from that list is Crucible. “We do a lot of pair programming, so code reviews are conducted up front…We may add it as collaboration between the three teams increases.” Fair enough.</p>
<div id="attachment_21363" class="wp-caption alignleft" style="width: 310px"><a href="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/MarsRoverShadow.jpg" rel="lightbox[21361]" title="Mars Rover"><img class="size-medium wp-image-21363" title="Mars Rover" src="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/MarsRoverShadow-300x231.jpg" alt="" width="300" height="231" /></a><p class="wp-caption-text">Image courtesy of NASA/JPL-Caltech</p></div>
<p>At present, Ensemble’s biggest project is a Mars rover named “Curiosity,” launched in November 2011 and due to touch down on the red planet this August. Curiosity is an unmanned science lab which will use rock-evaporating lasers, camera/spectrometer hybrids, and high definition stereo cameras to investigate whether it’s landing region could (or did in the past) support microbial life. It will also help scientists understand the radiation environment on Mars in preparation for eventual human missions there, targeted within the next 10-15 years.</p>
<p>As with the Spirit and Opportunity rovers currently calling Mars home, data collected by Curiosity will be sent back to Earth once a day, around the time of the Martian sunset. (Being solar-powered, the rovers are field geologists by day, and happy slumberers by night.) Using Ensemble and a transient, cloud-like computing hive of “about a thousand CPUs,” Curiosity’s operators will crunch through the day’s data, and within a few hours, send up it’s task list for the next day. Now THAT’s agile planning!</p>
<p>Behind the scenes, Bamboo is powering a continuous deployment pipeline that makes the whole works even more agile by delivering software updates to their private cloud as fast as the Ensemble engineers can crank them out. Code from six active branches is built using custom scripts that sit on top of Eclipse and SVN, and invoked by Bamboo. Each successful build is then deployed to, and rigorously tested on, two preliminary environments before going into operation. (Just imagine bragging to your friends that the code you wrote today will be driving rovers on Mars tomorrow! That ain’t science fiction, baby; it’s science fact.) Mittman &amp; team are also moving toward a continuous deploy model for sharing their work with other developers building operational software for the International Space Station.</p>
<h2>Ensemble&#8217;s Upcoming Performance</h2>
<div id="attachment_21392" class="wp-caption alignright" style="width: 310px"><a href="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/SPHERES_1.jpg" rel="lightbox[21361]" title="SPHERES_1"><img class="size-medium wp-image-21392" title="SPHERES_1" src="http://atlassian.wpengine.netdna-cdn.com/wp-content/uploads/SPHERES_1-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">Image courtesy of NASA</p></div>
<p>What’s next for the Ensemble team? Oh not much…only “the first Eclipse RCP-based application to run on the International Space Station,” says Mittman. (!) Using OSGi to pull various components into a single application, this application will operate a SPHERES (Synchronized Position Hold Engage and Reorient Experimental Satellites) robot, as part of NASA’s Human Exploration Telerobotics project. Ensemble’s role will be to command and monitor a SPHERES free-flying robot equipped with an Android &#8220;Nexus S&#8221; smartphone for data processing. Another project in their pipeline will also be used on the ISS, this time to demonstrate how a human up in the space station can control a robot down on a planetary or lunar surface.</p>
<p>Space robots? Check. Groundbreaking technologies? Check. All in a days work for the guys n’ gals of Ensemble. We at Atlassian are honored and humbled that our tools are supporting this intrepid crew of computer scientists. Preparing for awesomeness in T-minus 5… 4… 3… 2… 1!</p>
<p>&nbsp;</p>
<p>For more information on these far-out applications of computer code, check the sites below:</p>
<ul>
<li>NASA&#8217;s Mars program <a href="http://marsprogram.jpl.nasa.gov/msl/" rel="nofollow">http://marsprogram.jpl.nasa.gov/msl/</a></li>
<li>Curiosity rover: <a href="http://msl-scicorner.jpl.nasa.gov/" rel="nofollow">http://msl-scicorner.jpl.nasa.gov/</a></li>
<li>MSLICE tech Brief: <a href="http://www.techbriefs.com/component/content/article/5707" rel="nofollow">http://www.techbriefs.com/component/content/article/5707</a></li>
<li>Cloud computing at JPL: <a href="http://aws.amazon.com/solutions/case-studies/nasa-jpl/" rel="nofollow">http://aws.amazon.com/solutions/case-studies/nasa-jpl/</a></li>
<li>SPHERES robots: <a href="http://ssl.mit.edu/spheres/" rel="nofollow">http://ssl.mit.edu/spheres/</a></li>
</ul>
<p><em> Special thanks to David for taking time out of his day to share these rare insights with us!</em></p>
 <img src="http://blogs.atlassian.com/?feed-stats-post-id=21361" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.atlassian.com/2012/05/nasa-atlassian-development-tools/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Goodbye Subversion, Hello Mercurial: A Migration Guide</title>
		<link>http://blogs.atlassian.com/2011/03/goodbye_subversion_hello_mercurial/</link>
		<comments>http://blogs.atlassian.com/2011/03/goodbye_subversion_hello_mercurial/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 15:41:54 +0000</pubDate>
		<dc:creator>Jason Hinch</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[DVCS]]></category>

		<guid isPermaLink="false">http://blogs.atlassian.com/2011/03/goodbye_subversion_hello_mercurial_a_migration_guide/</guid>
		<description><![CDATA[Migrating to Mercurial may seem daunting. Find out how The FishEye and Crucible team migrated their repository and learn from our experience]]></description>
				<content:encoded><![CDATA[<p>In my <a href="http://atlassian.wpengine.netdna-cdn.com/developer/2011/02/moving_to_mercurial_-_why_we_did_it.html" rel="nofollow">previous post</a>, I discussed some of the factors influencing Atlassian to move away from Subversion and start using Mercurial. This post will be getting into the nitty gritty of how to migrate an existing project&#8217;s Subversion repository and how to prepare your development team for the move.</p>
<h1>Setting some Goals</h1>
<p>The FishEye and Crucible team had a few goals for the migration to Mercurial.</p>
<ul>
<li><strong>Bring our history with us.</strong> The team wanted the Mercurial repository to resemble it&#8217;s Subversion counterpart as much as possible. We wanted to have the all the history contributing to our development branch (trunk) as well as our two supported release branches (2.2 and 2.3 at the time). Other branches such as ShipIt branches and 20% time were less important but ideally converted as well. We were happy to exclude accidental commits and commits of large files from the conversion.</li>
<li><strong>Tool Integration</strong>. We wanted to make sure the tools and software that we used for development provided the same level of integration with Mercurial as they do for Subversion. These were mainly <em>FishEye</em>, <em>Crucible</em>, <em>Bamboo</em>, <em>Eclipse</em> and <em>Intellij IDEA</em>.</li>
<li><strong>Incremental</strong>. The conversion should be performed incrementally. This was incredibly important in order to ensure that the history was how we expected it, system integration worked and everyone could perform their development tasks without running into problems due to Mercurial. This was also important in minimising the disruptions that would occur for developers.</li>
<li><strong>Replicate team process.</strong> At least initially, we wanted to replicate the current Subversion development workflow using Mercurial. We were happy the experiment with other workflows which aren&#8217;t possible in subversion after the initial migration.</li>
</ul>
<h1>The right tool for the job</h1>
<p>Mercurial comes bundled with the command <a href="http://mercurial.selenic.com/wiki/ConvertExtension" rel="nofollow"><em>hg convert</em></a>. This can be used to migrate many different types of SCM repositories to a Mercurial, including Subversion. We followed the <a href="http://mercurial.selenic.com/wiki/ConvertExtension#Converting_from_Subversion" rel="nofollow">helpful guide</a> that is provided on the website. At first it looked quite promising. The conversion didn&#8217;t produce any errors. But as we started to to look at the resulting Mercurial repository some things just didn&#8217;t look right.</p>
<p>We decided to do a script based comparison of the Mercurial and Subversion heads of each branch and tag. We found that many tags and branches were very different and on top of this, Mercurial&#8217;s incremental conversions of new commits were taking at least 3 minutes. This was far from acceptable as we were used to committed changesets being available almost instantly in FishEye/Crucible.</p>
<p>We spoke to a few members of the <a href="https://bitbucket.org/" rel="nofollow">Bitbucket</a> team and they suggested that we give <a href="http://bitbucket.org/durin42/hgsubversion/wiki/Home" rel="nofollow">hgsubversion</a> a try. The conversion using this tool was far more accurate and was faster at doing incremental conversions.</p>
<h1>Converting using hgsubversion</h1>
<h2>Step 1: Create an SVN mirror</h2>
<p>Regardless of the tool you decide to use for the conversion the first thing you should do is to set up a local mirror of your Subversion repository. The conversion tools will make numerous calls to repository for data and you will most likely perform more than one conversion.</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">svnadmin</span> create fe-mirror <span style="color: #666666; font-style: italic;"># we need to enable the pre-revprop-change hook for sync to work</span><br />
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'#!/bin/sh'</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; fe-mirror<span style="color: #000000; font-weight: bold;">/</span>hooks<span style="color: #000000; font-weight: bold;">/</span>pre-revprop-change<br />
<span style="color: #c20cb9; font-weight: bold;">chmod</span> +x fe-mirror<span style="color: #000000; font-weight: bold;">/</span>hooks<span style="color: #000000; font-weight: bold;">/</span>pre-revprop-change<br />
<span style="color: #c20cb9; font-weight: bold;">svnsync</span> init file:<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">pwd</span><span style="color: #000000; font-weight: bold;">`/</span>fe-mirror https:<span style="color: #000000; font-weight: bold;">//</span>svn.example.com<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>FECRU<br />
<span style="color: #c20cb9; font-weight: bold;">svnsync</span> <span style="color: #c20cb9; font-weight: bold;">sync</span> file:<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">pwd</span><span style="color: #000000; font-weight: bold;">`/</span>fe-mirror</div></td></tr></tbody></table></div>
<p>The initial synchronisation will take a while and is dependent on the size of your project as well as the size of your repository. For example the FishEye team checks in jar dependencies. This meant that every version of those jars over time needed to be synchronised. Also if there are multiple projects in your SVN repository, the synchronisation needs to go through all the revisions which includes revisions which weren&#8217;t made by your project. These are later ignored by the conversion process but are still important in the Subversion repository. FishEye/Crucible repository took a few days for the initial sync.</p>
<h2>Step 2: Create author mappings</h2>
<p>Mercurial (as well as most DVCS products) has a different standard for author names than Subversion. In Subversion author names are controlled centrally and their structure is dictated by the administrator for that repository. DVCS does not enforce such restrictions (due to people being able to commit to their local repository) so a recommended standard was used <em>Full Name &lt;Email address&gt;</em>. For example: <em>John Doe&lt;jdoe@example.com&gt;</em>. To get a list of all authors in your repository execute the following:</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">svn log</span> file:<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">pwd</span><span style="color: #000000; font-weight: bold;">`/</span>fe-mirror<span style="color: #000000; font-weight: bold;">/</span>FECRU <span style="color: #660033;">--quiet</span> <span style="color: #660033;">--xml</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> author <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-E</span> <span style="color: #ff0000;">&quot;s:&amp;lt;/?author&amp;gt;;::g&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sort</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">uniq</span></div></td></tr></tbody></table></div>
<p>Both <em>hgsubversion</em> and <em>hg convert</em> use a file to map between the subversion author name and the new Mercurial author name. The file uses the following pattern:</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">jdoe</span>=John Doe <span style="color: #000000; font-weight: bold;">&amp;</span>lt;jdoe<span style="color: #000000; font-weight: bold;">@</span>example.com<span style="color: #000000; font-weight: bold;">&amp;</span>gt;<br />
<span style="color: #007800;">msmith</span>=Mary Smith <span style="color: #000000; font-weight: bold;">&amp;</span>lt;msmith<span style="color: #000000; font-weight: bold;">@</span>example.com<span style="color: #000000; font-weight: bold;">&amp;</span>gt;<br />
...</div></td></tr></tbody></table></div>
<p>hgsubversion also provides a default host for repositories where the author in subversion maps directly to an email address in with the same user portion.</p>
<h2>Step 3: Create an initial Mercurial conversion</h2>
<p>Provided you have <em>hgsubversion</em> installed and on your <em>PYTHONPATH</em>, you should be able to convert the subversion repository. You have to make sure you include the path to the project in the mirrored repository url as well.</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">hg clone <span style="color: #660033;">--config</span> extensions.hgsubversion= <span style="color: #660033;">--config</span> hgsubversion.authormap=usermapping.txt \<br />
<span style="color: #660033;">--config</span> hgsubversion.defaulthost=atlassian.com file:<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">pwd</span><span style="color: #000000; font-weight: bold;">`/</span>fe-mirror<span style="color: #000000; font-weight: bold;">/</span>FECRU fe-mirror-hgsvn</div></td></tr></tbody></table></div>
<p>The initial conversion to Mercurial for FishEye/Crucible took a few hours, but other projects in Atlassian only took a few minutes.</p>
<h2>Step 4: Sanitising the Conversion</h2>
<p>In the history of most projects, someone always ends up screwing up a repositories history. Copying the wrong directory to the wrong location, adding massive log files or binaries into the repository. The list goes on. These mistakes you don&#8217;t necessarily want in your new repository, so you might want to exclude them from the history. We do this through creating a file mapping file. It looks something like this:</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">exclude crucible-<span style="color: #000000;">1.0</span>-beta<br />
exclude crudev-<span style="color: #000000;">1.1</span><br />
exclude trunk<br />
exclude etc<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>hist<br />
exclude etc<span style="color: #000000; font-weight: bold;">/</span>clover<span style="color: #000000; font-weight: bold;">/</span>beac</div></td></tr></tbody></table></div>
<p>You can choose to <em>include</em> or <em>exclude</em> certain paths. In the above instances, we&#8217;re not excluding the trunk, we are excluding a time when someone copied the trunk directory into a branch directory instead of the contents of trunk contents. Another example from above is when someone committed the clover results from our bamboo server into the repository. These consumed a lot of space and weren&#8217;t needed. If you don&#8217;t want to look through your entire history, you can look into Mercurial&#8217;s internal data storage and see potential files for exclusion. The following command will list the files in descending size order:</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> fe-mirror-hgsvn<br />
<span style="color: #c20cb9; font-weight: bold;">du</span> <span style="color: #660033;">-ak</span> .hg<span style="color: #000000; font-weight: bold;">/</span>store<span style="color: #000000; font-weight: bold;">/</span>data <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">egrep</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'*.i$'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'*.d$'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sort</span> <span style="color: #660033;">-rg</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">less</span><br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</div></td></tr></tbody></table></div>
<p>Which will look something like this:</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000;">49132</span> .hg<span style="color: #000000; font-weight: bold;">/</span>store<span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>maven-dependencies-build<br />
<span style="color: #000000;">38140</span> .hg<span style="color: #000000; font-weight: bold;">/</span>store<span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>maven-dependencies<span style="color: #000000; font-weight: bold;">/</span>fastutil-6.1.0.jar.d<br />
<span style="color: #000000;">31092</span> .hg<span style="color: #000000; font-weight: bold;">/</span>store<span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>svnrepos<span style="color: #000000; font-weight: bold;">/</span>checkstyle.zip.d</div></td></tr></tbody></table></div>
<h2>Step 5: Creating a <em>Working</em> repository</h2>
<p>Now that we have a user mapping file and an file mapping file, we clone the subversion repository again:</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">hg clone <span style="color: #660033;">--config</span> extensions.hgsubversion= <span style="color: #660033;">--config</span> hgsubversion.filemap=filemapping.txt \<br />
<span style="color: #660033;">--config</span> hgsubversion.authormap=usermapping.txt \<br />
<span style="color: #660033;">--config</span> hgsubversion.defaulthost=atlassian.com file:<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">pwd</span><span style="color: #000000; font-weight: bold;">`/</span>fe-mirror<span style="color: #000000; font-weight: bold;">/</span>FECRU fe-mirror-hgsvn</div></td></tr></tbody></table></div>
<p>This can be considered the <em>full conversion</em>. You may just want to use this repository, but the FishEye/Crucible team found that this repository:</p>
<ol>
<li>Contained many branches that we were not interested in for day to day development</li>
<li>Contained conversions of <a href="http://svnbook.red-bean.com/en/1.1/ch04s06.html" rel="nofollow">complex tags</a> which created large revisions which weren&#8217;t part of the mainline development</li>
<li>Was large. The full conversion for the FishEye/Crucible repository was 2Gb. This is because we commit jar files to our repository which take up a lot of space. Other repositories converted to Mercurial weren&#8217;t nearly as big.</li>
</ol>
<p>We decided to create a <em>working</em> repository with a subset of the branches.</p>
<h3>Step 5a: Excluding unrelated and irrelevant branches</h3>
<p>Subversion does not model branches in a repository as a first class entity, but rather as a subdirectory. This means that branches can easily be created incorrectly and the converter sometimes is not able to correctly identify the branch. As a result you <em>sometimes</em> end up with multiple, unrelated histories in your repository. There were no occurrences of these during the conversion of the FishEye/Crucible repository but there were definitely branches we didn&#8217;t care about having in our working repository. We decided to keep three branches; Our main development branch (default) and the two most recent support branches (2.2 and 2.3).</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> working-repository<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> working-repository<br />
hg init hg pull <span style="color: #660033;">-r</span> default ..<span style="color: #000000; font-weight: bold;">/</span>fe-mirror-hgsvn<br />
hg pull <span style="color: #660033;">-r</span> <span style="color: #000000;">2.2</span> ..<span style="color: #000000; font-weight: bold;">/</span>fe-mirror-hgsvn<br />
hg pull <span style="color: #660033;">-r</span> <span style="color: #000000;">2.3</span> ..<span style="color: #000000; font-weight: bold;">/</span>fe-mirror-hgsvn<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</div></td></tr></tbody></table></div>
<h3>Step 5b: Closing non-topological heads (optional)</h3>
<p>Additional heads revisions on branches are sometimes created during the conversion process. A good example of when this would happen is when someone creates a branch from a tag of a project. Mercurial has the ability to mark these heads as <em>closed</em>. To get a list of these heads we compare the list of most recent commits on all branches to the list of all heads:</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> working-repository<br />
hg branches <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">egrep</span> <span style="color: #660033;">-o</span> <span style="color: #ff0000;">&quot;:[0-9a-f]{12}( (inactive))?$&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">egrep</span> <span style="color: #660033;">-o</span> <span style="color: #ff0000;">&quot;[0-9a-f]{12}&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sort</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">uniq</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; branch-heads.txt<br />
hg log <span style="color: #660033;">-r</span> <span style="color: #ff0000;">&quot;head() and not closed()&quot;</span> <span style="color: #660033;">--template</span> <span style="color: #ff0000;">&quot;{node}n&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-b</span> <span style="color: #000000;">1</span>-<span style="color: #000000;">12</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sort</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">uniq</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; non-closed-heads.txt<br />
<span style="color: #c20cb9; font-weight: bold;">diff</span> branch-heads.txt non-closed-heads.txt<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</div></td></tr></tbody></table></div>
<p>To close these heads we first update to them then commit using the</p>
<div class="codecolorer-container text mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--close-branch</div></td></tr></tbody></table></div>
<p>flag</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> working-repository<br />
hg update CHANGESET<br />
hg commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;Closing head&quot;</span> <span style="color: #660033;">--close-branch</span><br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</div></td></tr></tbody></table></div>
<h2>Step 6: Rinse and repeat</h2>
<p>In order to do this incrementally, you will need to first synchronise the subversion mirror again:</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">svnsync</span> <span style="color: #c20cb9; font-weight: bold;">sync</span> file:<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">pwd</span><span style="color: #000000; font-weight: bold;">`/</span>fe-mirror</div></td></tr></tbody></table></div>
<p>Then pull the latest changes into the full conversion.</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> fe-mirror-hgsvn<br />
hg pull <span style="color: #660033;">--config</span> extensions.hgsubversion=<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</div></td></tr></tbody></table></div>
<p>You may need to close any newly created heads, which can happen happen under the conditions mentioned in step 5b but this is unlikely. Finally pull any changes made on the important branches into the working repository.</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #7a0874; font-weight: bold;">cd</span> working-repository<br />
hg pull <span style="color: #660033;">-r</span> <span style="color: #000000;">2.2</span> ..<span style="color: #000000; font-weight: bold;">/</span>fe-mirror-hgsvn<br />
hg pull <span style="color: #660033;">-r</span> <span style="color: #000000;">2.3</span> ..<span style="color: #000000; font-weight: bold;">/</span>fe-mirror-hgsvn<br />
hg pull <span style="color: #660033;">-r</span> default ..<span style="color: #000000; font-weight: bold;">/</span>fe-mirror-hgsvn</div></td></tr></tbody></table></div>
<p>For the FishEye/Crucible migration, we used a shell script to automate this process which ran every minute.</p>
<h1>All systems are go</h1>
<p>In addition to converting the repository to Mercurial we also needed to set up our development environments for Mercurial development. The default Mercurial distribution for Mac OS X was used for mac users and either <a href="http://jasonfharris.com/machg/" rel="nofollow">Machg</a> or <a href="http://www.sourcetreeapp.com/" rel="nofollow">SourceTree</a> for GUI clients. <a href="http://tortoisehg.bitbucket.org/" rel="nofollow">Tortoisehg</a> was used for Windows which bundles the Mercurial command line tool as well as a GUI. We use Eclipse and Intellij IDEA for development. <a href="http://www.javaforge.com/project/HGE" rel="nofollow">MercurialEclipse</a> works well and is the defacto standard for Mercurial integration for Eclipse. IDEA X supports Mercurial through their hg4idea plugin. Using the combination of these tools we saw little to no difference in the tool usage. Many operations are actually faster due to them interacting with a local repository as oppose to over a network connection.</p>
<p>Integrating with our products was fairly straight forward. In <a href="http://confluence.atlassian.com/display/FISHEYE/Mercurial" rel="nofollow">FishEye/Crucible 2.5</a> and <a href="http://confluence.atlassian.com/display/BAMBOO/Mercurial" rel="nofollow">Bamboo 2.7+</a> you can add a Mercurial repository using ssh which works well with Bitbucket. However to minimise the amount of data being sent over the internet we set up clone of the repository inside the network our Bamboo and FishEye servers are. We were able to look at diff, annotations, build results and see if they were consistent with each other.Prior to the move, all the developers took a bit of time to clone the repository and set up their development environment in order to make the sure it all works as they expect.</p>
<p>On the actual day that we moved over, it was very little difference in the routine due to all the preparation before the conversion. The only difference was that in the morning, everyone pulled in the most recent changes from the central Mercurial repository. After that it was business as usual. No development speed was lost which was a huge win for the FishEye/Crucible. A big thanks to Matt Watson for converting the repository, preparing the team for the migration as well as supplying a lot of the information in this blog.</p>
<h1><a name="MigratingtoMercurial-What'sNext"></a>What&#8217;s Next</h1>
<p>In my next post, I&#8217;ll be talking about how the FishEye &amp; Crucible team reacted to the switch to Mercurial. What was different? What did we learn? Stay tuned.</p>
 <img src="http://blogs.atlassian.com/?feed-stats-post-id=14858" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.atlassian.com/2011/03/goodbye_subversion_hello_mercurial/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Continuous integration &amp; deployment in Bamboo 3.0</title>
		<link>http://blogs.atlassian.com/2011/02/continuous_integration_deployment_in_bamboo_3_0/</link>
		<comments>http://blogs.atlassian.com/2011/02/continuous_integration_deployment_in_bamboo_3_0/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 22:47:31 +0000</pubDate>
		<dc:creator>Jon Silvers</dc:creator>
				<category><![CDATA[Bamboo]]></category>
		<category><![CDATA[press releases]]></category>

		<guid isPermaLink="false">http://blogs.atlassian.com/2011/02/continuous_integration_deployment_in_bamboo_3_0/</guid>
		<description><![CDATA[Today we&#8217;re announcing Bamboo 3.0, the latest and greatest incarnation of our continuous integration server for agile software development teams. Bamboo 3.0 includes support for Git and Mercurial DVCS, a fresh UI, a new artifact sharing feature, tighter integration with JIRA, and dozens of new features, updates, and bug fixes. We are also happy to announce a new acquisition &#8211; Sysbliss. With this acquisition we acquired two great plugins that are now free for Atlassian customers &#8211; Bamboo Release Management plugin and the JIRA workflow designer plugin. Where to next? Get all the details on Bamboo 3.0 and the Release Management plugin Read about how continuous deployment has helped our team build and test software Download a free 30-day eval of Bamboo 3.0 ATLASSIAN ANNOUNCES THE RELEASE OF BAMBOO 3.0 AND ACQUISITION OF THE SYSBLISS RELEASE MANAGEMENT PLUGIN Bamboo&#8217;s new continuous deployment, release management capabilities help automate your product development lifecycle. San Francisco, CA (PRWEB) February 16, 2011 &#8211; Atlassian today announced the release of Bamboo 3.0, its continuous integration server software, introducing features to improve build speed and effectively implement continuous deployment into the build process for agile teams. Bamboo 3.0 also includes support for Git and Mercurial DVCS, a fresh UI, a new artifact sharing feature, tighter integration with JIRA, and dozens of new features, updates, and bug fixes. In addition, Atlassian is announcing that it has acquired two plugins from Sysbliss: Bamboo Release Management and JIRA Workflow Designer. In July 2010, Atlassian announced it had received a $60M round of funding from Accel Partners to accelerate growth, including new M&#38;A. The acquisition of these plugins follows the acquisition of Bitbucket.org in September 2010. &#8220;Bamboo has come a long way in providing some of the most powerful features in any CI server,&#8221; said Mike Cannon-Brookes, Atlassian CEO and co-founder. &#8220;In version 1.0, we introduced the concept of &#8220;build telemetry,&#8221; a feature that provided terrific metrics around software builds. In 2.0, we announced infinite scalability via distributed builds in Amazon EC2. In this version, we offer continuous deployment which gives teams greater confidence and speed in software production.&#8221; From CI to CD Atlassian Bamboo is a powerful continuous integration (CI) server that allows users to automate their build process and kick off software testing. As a result, agile development teams can shave off precious hours from their software development time, identify problems early, and gain new insights into their development practices. Bamboo was the first CI tool to leverage Amazon&#8217;s EC2 to effortlessly scaling large builds in the cloud. Agile teams have learned to &#8220;test early, test often,&#8221; and continuous integration servers enabled them to automate this painful task. But there was still one painful step left when building software&#8230; deploying it. This latest edition provides features focused on continuous deployment. Bamboo 3.0 provides the structure and tools that are required to automate the deployment and release process. Bamboo allows teams to map their complete deployment process, starting with building the software to deploying software into a testing or [...]]]></description>
				<content:encoded><![CDATA[<p>Today we&#8217;re announcing <a href="http://www.atlassian.com/software/bamboo">Bamboo 3.0</a>, the latest and greatest incarnation of our continuous integration server for agile software development teams. Bamboo 3.0 includes support for Git and Mercurial DVCS, a fresh UI, a new artifact sharing feature, tighter integration with JIRA, and dozens of new features, updates, and bug fixes. We are also happy to announce a new acquisition &#8211; Sysbliss. With this acquisition we acquired two great plugins that are now free for Atlassian customers &#8211; Bamboo Release Management plugin and the JIRA workflow designer plugin.</p>
<h3><strong>Where to next?</strong></h3>
<ul>
<li>Get all the details on <a href="http://atlassian.wpengine.netdna-cdn.com/devtools/2011/02/bamboo-30-continuous-deployment.html">Bamboo 3.0 and the Release Management plugin</a></li>
<li>Read about how <a href="http://atlassian.wpengine.netdna-cdn.com/developer/2011/02/continuous_deployment_at_atlassian.html">continuous deployment</a> has helped our team build and test software</li>
<li><a href="http://www.atlassian.com/software/bamboo">Download</a> a free 30-day eval of Bamboo 3.0</li>
</ul>
<p><span id="more-17459"></span></p>
<h4>ATLASSIAN ANNOUNCES THE RELEASE OF BAMBOO 3.0 AND ACQUISITION OF THE SYSBLISS RELEASE MANAGEMENT PLUGIN</h4>
<h3><strong>Bamboo&#8217;s new continuous deployment, release management capabilities help automate your product development lifecycle.</strong></h3>
<p><strong>San Francisco, CA (PRWEB) February 16, 2011</strong> &#8211; Atlassian today announced the release of Bamboo 3.0, its <a href="http://www.atlassian.com/software/bamboo">continuous integration server software</a>, introducing features to improve build speed and effectively implement continuous deployment into the build process for <a href="http://www.atlassian.com/software/bamboo/agile-teams.jsp">agile teams</a>. Bamboo 3.0 also includes support for Git and Mercurial DVCS, a fresh UI, a new artifact sharing feature, tighter integration with JIRA, and dozens of new features, updates, and bug fixes.</p>
<p>In addition, Atlassian is announcing that it has acquired two plugins from Sysbliss: <a href="http://www.atlassian.com/software/bamboo/release-management.jsp">Bamboo Release Management</a> and JIRA Workflow Designer. In July 2010, Atlassian announced it had received a $60M round of funding from Accel Partners to accelerate growth, including new M&amp;A. The acquisition of these plugins follows the acquisition of Bitbucket.org in September 2010.</p>
<p>&#8220;Bamboo has come a long way in providing some of the most powerful features in any CI server,&#8221; said Mike Cannon-Brookes, Atlassian CEO and co-founder. &#8220;In version 1.0, we introduced the concept of &#8220;build telemetry,&#8221; a feature that provided terrific metrics around software builds. In 2.0, we announced infinite scalability via distributed builds in Amazon EC2. In this version, we offer continuous deployment which gives teams greater confidence and speed in software production.&#8221;</p>
<h3><strong>From CI to CD</strong></h3>
<p>Atlassian Bamboo is a powerful continuous integration (CI) server that allows users to automate their build process and kick off software testing. As a result, agile development teams can shave off precious hours from their software development time, identify problems early, and gain new insights into their development practices. Bamboo was the first CI tool to leverage Amazon&#8217;s EC2 to effortlessly scaling large builds in the cloud. Agile teams have learned to &#8220;test early, test often,&#8221; and continuous integration servers enabled them to automate this painful task. But there was still one painful step left when building software&#8230; deploying it.</p>
<p>This latest edition provides features focused on continuous deployment. Bamboo 3.0 provides the structure and tools that are required to automate the deployment and release process. Bamboo allows teams to map their complete deployment process, starting with building the software to deploying software into a testing or even production environment.</p>
<h3><strong>DVCS</strong></h3>
<p>Bamboo now has support for the two most popular DVCS tools in the market. Git and Mercurial are supported out of the box, and Bamboo makes it easy to test a project, whether it&#8217;s hosted behind a company&#8217;s firewall, on Bitbucket or on GitHub.<br />
<strong></strong></p>
<h3><strong>Release Management</strong></h3>
<p>Available for free today to Bamboo customers, the Release Management plugin allows users to run a release build, publish the artifacts, tag the version in SCM, release the version in JIRA, create a branch for the next version in SCM, switch the build to use the new branch&#8230; all with a single click of a button. Jonathan Doklovic, the developer and founder of Sysbliss, has joined Atlassian and will continue development on both the Bamboo Release Management and JIRA Workflow Designer plugins.</p>
<h3><strong>Continuous expansion</strong></h3>
<p>Over 1200 customers in 53 countries use Bamboo. In addition to the latest features, Bamboo features tight integration with JIRA, the world&#8217;s most popular issue tracker, as well as Atlassian FishEye, Crucible, and Clover. For a free 30-day evaluation or Bamboo and the Release Management plugin, visit www.atlassian.com/bamboo.</p>
<h3><strong>About Atlassian</strong></h3>
<p>Atlassian provides software development and collaboration tools to help teams conceive, plan, build and launch great products. More than 22,000 organisations of all sizes use Atlassian&#8217;s issue tracking, collaboration and agile software development tools to work smarter and deliver quality results on time. Learn more at <a href="http://www.atlassian.com">http://www.atlassian.com</a></p>
 <img src="http://blogs.atlassian.com/?feed-stats-post-id=17459" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.atlassian.com/2011/02/continuous_integration_deployment_in_bamboo_3_0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>State of the Union &#8211; JIRA and GreenHopper</title>
		<link>http://blogs.atlassian.com/2010/06/jira_greenhopper_state_of_the_union/</link>
		<comments>http://blogs.atlassian.com/2010/06/jira_greenhopper_state_of_the_union/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 19:16:52 +0000</pubDate>
		<dc:creator>John Sloat</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.atlassian.com/2010/06/state_of_the_union_jira_and_greenhopper/</guid>
		<description><![CDATA[If you frequent the Atlassian blogs, you&#8217;ve probably been hearing a lot about our second annual user conference, the Atlassian Summit. We pulled in a whopping 550 attendees this year with another 200 on the waiting list, way up from last year&#8217;s 325! As you can imagine, JIRA and GreenHopper came up as topics of conversation. So, what is the current condition of these two Atlassian products, and where do we plan on taking them in the future? JIRA and GreenHopper State of the Union Video My colleagues, Ken Olofsen and Edwin Wong, have already done a much better job than I could ever hope to at summarizing all things JIRA and GreenHopper. So sit back and enjoy the fruits of their labor! The first 45 minutes of the video are JIRA and GreenHopper; after that it&#8217;s the dev tools (FishEye, Crucible, Clover, Crowd, Bamboo) state of the union and Q&#38;A for the whole session. I encourage you to check out the whole thing &#8211; and if you&#8217;re hungry for more, check out all the videos at our Summit 2010 mini-site. If you&#8217;re not convinced yet, here&#8217;s just a few of the topics covered in the video: JIRA Release Time &#8211; How did we go from 10-13 month release cycles to 4-6? And why are we shooting for 3-4? JIRA&#8217;s UX Journey &#8211; Starting with JIRA 4.0 we started work on a revamped user experience. Why the change, and where does this journey lead? JIRA 4.2 New Features &#8211; The next release of JIRA is right around the corner &#8212; learn about the new features, including expanded keyboard shortcuts and other time-saving features targeting advanced JIRA users. GreenHopper 5 New Features &#8211; If you haven&#8217;t already checked out the freshly-released GreenHopper 5, you&#8217;ll learn about the multitude of new features and revamped UX in this video. What&#8217;s Next for GreenHopper &#8211; GreenHopper 5 was a big one&#8230;but there&#8217;s still more to do. Adding keyboard shortcut functionality to GreenHopper is just one of many ideas on the table.]]></description>
				<content:encoded><![CDATA[<p>If you frequent the Atlassian blogs, you&#8217;ve probably been hearing a lot about our second annual user conference, the <b>Atlassian Summit</b>. We pulled in a whopping <b>550 attendees</b> this year with another 200 on the waiting list, way up from last year&#8217;s 325!<br />
As you can imagine, <b>JIRA and GreenHopper</b> came up as topics of conversation. So, what is the current condition of these two Atlassian products, and where do we plan on taking them in the future?</p>
<h2>JIRA and GreenHopper State of the Union Video</h2>
<p>My colleagues, <b>Ken Olofsen</b> and <b>Edwin Wong</b>, have already done a <a href="http://www.atlassian.com/summit/2010/presentations/development-speed/development-tools-state-of-the-union.jsp">much better job</a> than I could ever hope to at  summarizing all things JIRA and GreenHopper. So sit back and enjoy the fruits of their labor!<br />
The first 45 minutes of the video are JIRA and GreenHopper; after that it&#8217;s the dev tools (FishEye, Crucible, Clover, Crowd, Bamboo) state of the union and Q&amp;A for the whole session. I encourage you to check out the whole thing &#8211; and if you&#8217;re hungry for more, check out all the videos at our <a href="http://www.atlassian.com/summit/2010/presentations/general-sessions/atlassian-summit-2010-keynote-1.jsp">Summit 2010 mini-site</a>.<br />
If you&#8217;re not convinced yet, here&#8217;s just a few of the topics covered in the video:</p>
<ul>
<li><b>JIRA Release Time</b> &#8211; How did we go from 10-13 month release cycles to 4-6? And why are we shooting for 3-4?</li>
<li><b>JIRA&#8217;s UX Journey</b> &#8211; Starting with JIRA 4.0 we started work on a revamped user experience. Why the change, and where does this journey lead?</li>
<li><b>JIRA 4.2 New Features</b> &#8211; The next release of JIRA is right around the corner &#8212; learn about the new features, including <b>expanded keyboard shortcuts</b> and other time-saving features targeting advanced JIRA users.</li>
<li><b>GreenHopper 5 New Features</b> &#8211; If you haven&#8217;t already checked out the freshly-released <a href="http://www.atlassian.com/software/greenhopper/">GreenHopper 5</a>, you&#8217;ll learn about the multitude of new features and revamped UX in this video.</li>
<li><b>What&#8217;s Next for GreenHopper</b> &#8211; GreenHopper 5 was a big one&#8230;but there&#8217;s still more to do. Adding keyboard shortcut functionality to GreenHopper is just one of many ideas on the table.</li>
</ul>
<p>
<a href="http://analytics.episodic.com/download/eqhbzk5gcildr/f20/dev-tools-state-of-the-union-part-i-and-ii.mp4"><img src="http://content1.episodic.com/assets/480/a111214.jpg" height="360" width="640" border="0" /></a></p>
 <img src="http://blogs.atlassian.com/?feed-stats-post-id=15808" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.atlassian.com/2010/06/jira_greenhopper_state_of_the_union/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bamboo 2.6 released &#8211; 100 remote agents, improved dashboard</title>
		<link>http://blogs.atlassian.com/2010/06/bamboo_continuous_integration_scale_release_26/</link>
		<comments>http://blogs.atlassian.com/2010/06/bamboo_continuous_integration_scale_release_26/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 13:42:14 +0000</pubDate>
		<dc:creator>Giancarlo Lionetti</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.atlassian.com/2010/06/bamboo_2_6_released_100_remote_agents_improved_dashboard/</guid>
		<description><![CDATA[Bamboo 2.6 &#8211; Growing the Bamboo Forest The Atlassian Bamboo team is excited to announce the release of Bamboo 2.6. The focus of this release is scaling your Continuous Integration (CI) effort &#8211; more plans, more builds. 100 remote agents We have improved Bamboo&#8217;s scalability so you can now build more plans simultaneously on up to 100 remote agents. Previously Bamboo only supported up to 25 remote agents. With this dramatic increase in remote agents we also made some changes to the user interface to make it easier to manage your builds: Administration console - builders and JDKs are now grouped by their labels. Drag and drop - re-order builds in the queue with the ease of drag and drop. Remote agents tabs - online and offline remote agents are now separate tabs. Tooltips - improved tooltips on agents when specifying the capability requirements of a plan. Dynamic Elastic Agents Run Bamboo in the Amazon Elastic Compute Cloud (EC2) with more control by automatically managing the usage of the elastic instances. There are several flexible options which can be customized to your choosing: Default &#8211; balance the queue clearance rates. Aggressive &#8211; increase build queue clearance rates but with higher elastic instance usage (higher costs). Passive - decrease elastic instance usage but with lower build queue clearance rates (lower costs). Automated Grails and Clover integration Bamboo now offers continuous integration capabilities for Grails developers for their Groovy code. Also, Java and Groovy development teams using Clover, our code coverage and test optimization tool, can already integrate with Bamboo build plans with Clover through one-click integration. We now offer one-click code coverage to Grails developers for there Groovy code. Easily run clover reports for Groovy directly from Bamboo. Revamped Bamboo Dashboard The &#8220;Current Activity&#8221; tab on the Bamboo Dashboard has be redesigned to include &#8220;better&#8221; activity streams and easier ways to manage builds. The &#8220;Recent Activity&#8221; section, which shows activity streams of your build activity, now shows build comments on the dashboard. Hover over any build result and click on the comment &#8220;bubble&#8221; to provide an inline comment directly from the dashboard. Administrators now have the option of using the &#8220;Queue&#8221; section to re-order their builds with the ease of drag-and-drop. Also, the &#8220;Building&#8221; section now provide more information about the current builds that are running including an estimate of time remaining. Over 140 improvements and fixes Performance  User interface Security Read the full release notes for Bamboo 2.6 or download now. Deep Dive Over the next couple of weeks, we will be doing a deep dive on some of the new features in Bamboo 2.6, so subscribe to the Developer Tools Product Blog, if you are not already, and stay tuned! Get it today Download Bamboo 2.6 to upgrade or get started with a free 30-day trial.]]></description>
				<content:encoded><![CDATA[<h3>Bamboo 2.6 &#8211; Growing the Bamboo Forest</h3>
<p>The Atlassian Bamboo team is excited to announce the release of <a href="http://confluence.atlassian.com/display/BAMBOO/Bamboo+2.6+Release+Notes">Bamboo 2.6</a>. The focus of this release is scaling your <a href="http://www.atlassian.com/software/bamboo">Continuous Integration</a> (CI) effort &#8211; more plans, more builds.</p>
<h3>100 remote agents</h3>
<p><span class="mt-enclosure mt-enclosure-image"><a href="http://atlassian.wpengine.netdna-cdn.com/devtools/bamboo-scale-remote-agents.png" rel="lightbox[15561]" title="Bamboo 2.6 released - 100 remote agents, improved dashboard"><img alt="bamboo-scale-remote-agents.png" src="http://atlassian.wpengine.netdna-cdn.com/devtools/assets_c/2010/05/bamboo-scale-remote-agents-thumb-300x160.png" width="300" height="160" class="mt-image-right" style="float: right;margin: 0 0 0px 0px" /></a></span>We have improved Bamboo&#8217;s scalability so you can now build more plans simultaneously on up to <strong>100 remote agents</strong>. Previously Bamboo only supported up to 25 remote agents.<br />
With this dramatic increase in remote agents we also made some changes to the user interface to make it easier to manage your builds:</p>
<ul>
<li><strong>Administration console -</strong> builders and JDKs are now grouped by their labels.</li>
<li><span class="mt-enclosure mt-enclosure-image"><a href="http://atlassian.wpengine.netdna-cdn.com/devtools/Bamboo-continuous-integration-queue-1.png" rel="lightbox[15561]" title="Bamboo 2.6 released - 100 remote agents, improved dashboard"><img alt="Bamboo-continuous-integration-queue-1.png" src="http://atlassian.wpengine.netdna-cdn.com/devtools/assets_c/2010/05/Bamboo-continuous-integration-queue-1-thumb-300x117.png" width="300" height="117" class="mt-image-right" style="float: right;margin: 0 0 0px 0px" /></a></span><strong>Drag and drop -</strong> re-order builds in the queue with the ease of drag and drop.</li>
<li><strong>Remote agents tabs -</strong> online and offline remote agents are now separate tabs.</li>
<li><strong>Tooltips -</strong> improved tooltips on agents when specifying the capability requirements of a plan.</li>
</ul>
<h3><a href="http://atlassian.wpengine.netdna-cdn.com/devtools/2010/06/bamboo-26-deep-dive-automatically-managed-elastic-instances.html">Dynamic Elastic Agents</a></h3>
<p>Run Bamboo in the Amazon Elastic Compute Cloud (EC2) with more control by automatically managing the usage of the elastic instances. There are several flexible options which can be customized to your choosing:</p>
<ul>
<li><strong>Default &#8211; </strong>balance the queue clearance rates.</li>
<li><strong>Aggressive &#8211; </strong>increase build queue clearance rates but with higher elastic instance usage (higher costs).</li>
<li><strong>Passive -</strong> decrease elastic instance usage but with lower build queue clearance rates (lower costs).</li>
</ul>
<p><span class="mt-enclosure mt-enclosure-image"><a href="http://atlassian.wpengine.netdna-cdn.com/devtools/bamboo-cloud.png" rel="lightbox[15561]" title="Bamboo 2.6 released - 100 remote agents, improved dashboard"><img alt="bamboo-cloud.png" src="http://atlassian.wpengine.netdna-cdn.com/devtools/bamboo-cloud-thumb-400x300.png" width="400" height="300" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" /></a></span></p>
<h3>Automated Grails and Clover integration</h3>
<p>Bamboo now offers continuous integration capabilities for Grails developers for their Groovy code.<br />
Also, Java and Groovy development teams using Clover, our <a href="http://www.atlassian.com/software/clover/">code coverage</a> and test optimization tool, can already integrate with Bamboo build plans with Clover through one-click integration. We now offer one-click code coverage to Grails developers for there Groovy code. Easily run clover reports for Groovy directly from Bamboo.<br />
<span class="mt-enclosure mt-enclosure-image"><a href="http://atlassian.wpengine.netdna-cdn.com/devtools/bamboo-grails-groovy.png-1.png" rel="lightbox[15561]" title="Bamboo 2.6 released - 100 remote agents, improved dashboard"><img alt="bamboo-grails-groovy.png-1.png" src="http://atlassian.wpengine.netdna-cdn.com/devtools/bamboo-grails-groovy.png-1-thumb-400x291.png" width="400" height="291" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" /></a></span></p>
<h3>Revamped Bamboo Dashboard</h3>
<p><span class="mt-enclosure mt-enclosure-image"><a href="http://atlassian.wpengine.netdna-cdn.com/devtools/bamboo-continuous-integration-activity-stream-1.png" rel="lightbox[15561]" title="Bamboo 2.6 released - 100 remote agents, improved dashboard"><img alt="bamboo-continuous-integration-activity-stream-1.png" src="http://atlassian.wpengine.netdna-cdn.com/devtools/assets_c/2010/05/bamboo-continuous-integration-activity-stream-1-thumb-150x219.png" width="150" height="219" class="mt-image-right" style="float: right;margin: 0 0 20px 20px" /></a></span> The &#8220;Current Activity&#8221; tab on the Bamboo Dashboard has be redesigned to include &#8220;better&#8221; activity streams and easier ways to manage builds.<br />
The &#8220;Recent Activity&#8221; section, which shows activity streams of your build activity, now shows build comments on the dashboard. Hover over any build result and click on the comment &#8220;bubble&#8221; to provide an inline comment directly from the dashboard.<br />
Administrators now have the option of using the &#8220;Queue&#8221; section to re-order their builds with the ease of drag-and-drop.<br />
Also, the &#8220;Building&#8221; section now provide more information about the current builds that are running including an estimate of time remaining.</p>
<h3>Over 140 improvements and fixes</h3>
<ul>
<li>Performance</li>
</ul>
<ul>
<li> User interface</li>
</ul>
<ul>
<li>Security</li>
</ul>
<p>Read the full <a href="http://confluence.atlassian.com/display/BAMBOO/Bamboo+2.6+Release+Notes"><strong>release notes for Bamboo 2.6</strong></a> or <strong><a href="http://www.atlassian.com/software/bamboo/BambooDownloadCenter.jspa">download now</a></strong>.</p>
<h3>Deep Dive</h3>
<p>Over the next couple of weeks, we will be doing a <a href="http://atlassian.wpengine.netdna-cdn.com/devtools/2010/06/bamboo-26-deep-dive-automatically-managed-elastic-instances.html">deep dive</a> on some of the new features in Bamboo 2.6, so <a href="http://feeds.feedburner.com/AtlassianDevToolsBlog">subscribe</a> to the Developer Tools Product Blog, if you are not already, and stay tuned!</p>
<h3>Get it today</h3>
<p><a href="http://www.atlassian.com/software/bamboo/BambooDownloadCenter.jspa"><strong>Download</strong></a> Bamboo 2.6 to upgrade or get started with a <strong>free 30-day trial</strong>.</p>
 <img src="http://blogs.atlassian.com/?feed-stats-post-id=15561" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.atlassian.com/2010/06/bamboo_continuous_integration_scale_release_26/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Atlassian Webinar Roundup</title>
		<link>http://blogs.atlassian.com/2010/01/webinar_roundup/</link>
		<comments>http://blogs.atlassian.com/2010/01/webinar_roundup/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 10:22:56 +0000</pubDate>
		<dc:creator>Morgan Friberg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[atlassiantv]]></category>
		<category><![CDATA[video and audio]]></category>

		<guid isPermaLink="false">http://blogs.atlassian.com/2010/01/atlassian_webinar_roundup_2/</guid>
		<description><![CDATA[When I joined the marketing team at Atlassian, my first task was to create and run a successful Voice of the Customer and Plugin of the Month webinar series. Here we are, 17 months and over 32 webinars later, and I think we&#8217;ve done a pretty good job. Time flies when you are having fun! These webinar series were created to empower prospective customers with adequate information on our products and their integrations, as well as enriching current customers with the knowledge to extend our products beyond the &#8216;out of the box&#8217; uses. In a nut-shell, we want customers to know how other customers use our products, what hurdles they overcome with them, and what tools and plugins they used to do so. In the vein of being an open and transparent company, we thought these webinars would be the most efficient vehicle for achieving this goal. The webinar series immediately gained traction and, in turn, popularity. We book webinars months in advance and are never short on great topics to cover. We track the viewership numbers, and are proud to say that, as of the time of this blog post, there have been over 17,349 views of the recordings! This averages out to about 542 views per webinar. There has been some very meaty nuggets of information that has come out of the brave customers and partners who have participated in these webinars. Since it&#8217;s fresh in my head, the most recent webinar with Zend Framework stands out as being especially compelling. In it, we learn why a PHP shop would want to use our, Java-based, software. Here&#8217;s the recorded webinar: To shed some light on the vast number of webinars and topics we have covered in the past year and a half, I wanted to share the glorious list, in its entirety: Voice of the Customer 15 Oct 08 &#8211; Developing with JIRA, FishEye and Confluence: Patrick Coleman of Dash 13 Nov 08 &#8211; Confluence and over 17k Global Consultants: Nate Nash or BearingPoint 10 Dec 08 &#8211; JIRA on a Large Scale: Joanna Thurman of Polycom 14 Jan 09 &#8211; Confluence for Development and Documentation: Jon Hertzig of OpenCloud 11 Feb 09 &#8211; SunSpace: Confluence and 21k+ Users: Peter Reiser of Sun Microsystems 18 Feb 09 &#8211; Confluence &#38; 80k+ Global Consultants: Nicolas Peeters of Accenture 11 Mar 09 &#8211; Confluence, Crowd and Other Web 2.0 Tools: Walton Smith of Boooz Allen Hamilton 09 Apr 09 &#8211; Agile Best Practices with Atlassian Tools: Oren Teich of Replicate Technologies 14 May 09 &#8211; Scrum with JIRA, Confluence, Clover and FishEye: Jeff Schilling of S1 Enterprise 18 Jun 09 &#8211; Meet Fireball &#8211; The Collaboration Appliance: Mat Gauvin of Appfire 22 Oct 09 &#8211; Designing for Adoption &#8211; Customising Confluence: James Dellow of HeadShift 11 Nov 09 &#8211; JIRA &#38; FishEye for Agile SaaS Companies: Chris Brown of Backstop Solutions Group 06 Jan 10 &#8211; Zend Framework and many Atlassian Tools: Matthew Weier O&#8217;Phinney of Zend Framework Plugin of [...]]]></description>
				<content:encoded><![CDATA[<p>When I joined the marketing team at Atlassian, my first task was to create and run a successful Voice of the Customer and Plugin of the Month webinar series. Here we are, 17 months and over 32 webinars later, and I think we&#8217;ve done a pretty good job. Time flies when you are having fun!<br />
These webinar series were created to empower prospective customers with adequate information on our products and their integrations, as well as enriching current customers with the knowledge to extend our products beyond the &#8216;out of the box&#8217; uses. In a nut-shell, we want customers to know how other customers use our products, what hurdles they overcome with them, and what tools and plugins they used to do so. In the vein of being an open and transparent company, we thought these webinars would be the most efficient vehicle for achieving this goal.<br />
The webinar series immediately gained traction and, in turn, popularity. We book webinars months in advance and are never short on great topics to cover. We track the viewership numbers, and are proud to say that, as of the time of this blog post, there have been over <strong>17,349</strong> views of the recordings! This averages out to about <strong>542</strong> views per webinar.<br />
There has been some very meaty nuggets of information that has come out of the brave customers and partners who have participated in these webinars. Since it&#8217;s fresh in my head, the most recent webinar with <a href="http://www.zend.com/en/">Zend Framework</a> stands out as being especially compelling. In it, we learn why a PHP shop would want to use our, Java-based, software. Here&#8217;s the recorded webinar:</p>
<p style="text-align: center;"><a href="http://www.atlassian.com/tv/episode?id=ooed4kounrc7"><img alt="" src="http://img.skitch.com/20100112-efbsi7hjcbbd53fnnjs2ij8nq.jpg" align="" border="0" vspace="3" /></a></p>
<p>To shed some light on the vast number of webinars and topics we have covered in the past year and a half, I wanted to share the glorious list, in its entirety:</p>
<h2><span style="color: #338800;">Voice of the Customer</span></h2>
<div style="border: 1px solid; border-color: #338800; padding-left: 30px;">15 Oct 08 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2008/10/customer_talk_v.html">Developing with JIRA, FishEye and Confluence</a>: Patrick Coleman of Dash<br />
13 Nov 08 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2008/11/going_global_wi.html">Confluence and over 17k Global Consultants</a>: Nate Nash or BearingPoint<br />
10 Dec 08 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2008/12/115k_issues_and.html">JIRA on a Large Scale</a>: Joanna Thurman of Polycom<br />
14 Jan 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/01/opencloud_webin.html">Confluence for Development and Documentation</a>: Jon Hertzig of OpenCloud<br />
11 Feb 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/02/sun_microsystem.html">SunSpace: Confluence and 21k+ Users</a>: Peter Reiser of Sun Microsystems<br />
18 Feb 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/02/video_accenture.html">Confluence &amp; 80k+ Global Consultants</a>: Nicolas Peeters of Accenture<br />
11 Mar 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/03/video_booz_alle.html">Confluence, Crowd and Other Web 2.0 Tools</a>: Walton Smith of Boooz Allen Hamilton<br />
09 Apr 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/04/agile_video_ore.html">Agile Best Practices with Atlassian Tools</a>: Oren Teich of Replicate Technologies<br />
14 May 09 &#8211; <a href="http://www.youtube.com/watch?v=D7StHANlv1w">Scrum with JIRA, Confluence, Clover and FishEye</a>: Jeff Schilling of S1 Enterprise<br />
18 Jun 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/06/videos_fireball_the_collaborat.html">Meet Fireball &#8211; The Collaboration Appliance</a>: Mat Gauvin of Appfire<br />
22 Oct 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/10/video_designing_for_adoption_with_confluence.html">Designing for Adoption &#8211; Customising Confluence</a>: James Dellow of HeadShift<br />
11 Nov 09 &#8211; <a href="http://www.atlassian.com/tv/episode?id=o1qs7mjuatxd&amp;query=backstop">JIRA &amp; FishEye for Agile SaaS Companies</a>: Chris Brown of Backstop Solutions Group<br />
06 Jan 10 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2010/01/video_zend_framework_and_atlassian_tools.html">Zend Framework and many Atlassian Tools</a>: Matthew Weier O&#8217;Phinney of Zend Framework</div>
<h2><span style="color: #0055aa;">Plugin of the Month</span></h2>
<div style="border: 1px solid; border-color: #0055aa; padding-left: 30px;">26 Aug 08 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2008/09/confluence_plug.html">Multiple Plugins</a>: Dan Hardiker of Adaptavist<br />
24 Sep 08 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2008/10/cobetura_plugin.html">Bamboo Plugins</a>: Ross Rowe<br />
29 Oct 08 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2008/11/killer_jira_cli.html">JIRA Desktop Client</a>: Igor Sereda of ALM works<br />
19 Nov 08 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2008/11/confluence_plug_2.html">Confluence Plugin Mashup</a>: Andreas Meingast of netoCiety<br />
22 Jan 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/01/frevvo_live_for_1.html">Live Forms Designer</a>: Ashish Deshpande of frevvo<br />
28 Jan 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/01/video_gliffy_we.html">Gliffy the Diagraming Software</a>: Chris Kohlhardt of Gliffy<br />
25 Feb 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/03/video_balsamiq.html">Balsamiq Mockups</a>: JIRA &amp; Confluence: Peldi Guilizzoni of Balsamiq<br />
26 Mar 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/03/video_going_agi.html">The Rally Connector for JIRA</a>: Mark Ringer of Rally Software<br />
23 Apr 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/04/video_scaffoldi.html">Plugins for Confluence</a>: David Peterson of CustomWare<br />
21 May 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/05/video_confluenc.html">Approvals Workflow Pugin for Confluence</a>: Roberto Dominguez of Comala Tech<br />
25 Jun 09 &#8211; <a href="https://extranet.atlassian.com/display/MAR/POM+-+William+Anderson+of+Go2Group">JaM Plugin, CRM Plugin, and synapseRT</a>: William Anderson of Go2Group<br />
16 Jul 09 &#8211; <a href="http://www.atlassian.com/tv/episode?id=mpt9xplebk0w&amp;category=plugin">SharePoint Connector for JIRA</a>: Stafford Vaughan of CustomWare<br />
23 Jul 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/07/video_zagile_teamwork_with_sanjeev_the_founder.html">zAgile Teamwork for JIRA and Confluence</a>: Sanjiva Nath of zAgile<br />
13 Aug 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/08/video_project_zeus_the_contegix_cloud_computing_offering.html">Project Zeus &#8211; Enterprise Cloud Computing</a>: Matt Porter of Contegix<br />
21 Aug 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/08/video_enterprise_tester_by_catch_limited.html">Enterprise Tester for JIRA</a>: Bryce Day of Catch Limited<br />
24 Sep 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/09/video_taskdock_for_confluence.html">Taskdock for Confluence</a>: Erik Eccles of Taskdock<br />
05 Nov 09 &#8211; <a href="http://www.atlassian.com/tv/episode?id=nz92mizk4mqv&amp;query=scroll">Scroll Wiki Exporter for Confluence</a>: Tobias Anstett of K15t Software<br />
19 Nov 09 &#8211; <a href="http://www.atlassian.com/tv/episode?id=o4xj60e0rite&amp;query=vertygo">VertygoSLA Plugin for JIRA</a>: Eudes Nouvellon of Valiantys<br />
10 Dec 09 &#8211; <a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/12/video_jira_connector_for_jama_contour.html">JIRA Connector for Jama Contour</a>: Frank Charron of Jama</div>
<p>All webinars are posted to <a href="http://www.atlassian.com/tv/">Atlassian TV</a> where you can sort videos by products and categories. For upcoming webinars, please visit our <a href="http://www.atlassian.com/about/events/">events page</a>. If you would like to be in our webinar series, please <a href="mailto:webinars@atlassian.com">contact us</a>.</p>
 <img src="http://blogs.atlassian.com/?feed-stats-post-id=17201" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.atlassian.com/2010/01/webinar_roundup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A new year&#8217;s blog roundup</title>
		<link>http://blogs.atlassian.com/2010/01/a_new_years_blog_roundup/</link>
		<comments>http://blogs.atlassian.com/2010/01/a_new_years_blog_roundup/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 04:08:33 +0000</pubDate>
		<dc:creator>Jon Silvers</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.atlassian.com/2010/01/a_new_years_blog_roundup/</guid>
		<description><![CDATA[In 2009, we hit a new high of 3,000 blog subscribers. And that was just for our News blog. The other blogs also saw record numbers of subscribers. There&#8217;s no sign of a slow down. We wrote 10 blog posts since the last roundup, here are a few highlights: Video: Zend Framework and Atlassian tools. Zend Framework is arguably the most popular PHP framework available, boasting millions of downloads and an active community. Watch this video to learn how Zend is using Atlassian&#8217;s product suite. Watch now. The big list of Atlassian gadgets. Want to display your Bamboo plan summary on your JIRA dashboard? Or your FishEye charts on a Confluence page? The big list tells you how. There are gadgets that show information from Confluence, JIRA, GreenHopper, Bamboo, FishEye, Crucible and Clover. Read more. A tester&#8217;s dream: JIRA &#38; LogDigger. For anyone who has ever manually tested a web application, you know how much of a pain it can be to retrace your exact steps to reproduce a tricky bug. But that&#8217;s no longer the case when combining LogDigger and JIRA to do your testing. Read more. Bamboo 2.5 released &#8211; improved Maven support, easier build plan setup and more. Bamboo 2.5 includes better Maven 2 support, faster build plan creation, additional bulk build plan editing capabilities, and over 50 new features, improvements and bug fixes. Read more. New Atlassian trademark guidelines. The new guidelines were written to guide partners, plugin developers, and the community at large how to use Atlassian product names. Read more. Want to follow all the stories as they happen? Read and subscribe to these blogs: JIRA blog RSS Confluence blog RSS Dev Tools blog RSS News blog RSS Developers blog RSS All blogs RSS]]></description>
				<content:encoded><![CDATA[<p>In 2009, we hit a new high of 3,000 blog subscribers. And that was just for our <a href="http://blogs.atlassian.com/news">News blog</a>. The <a href="http://blogs.atlassian.com">other blogs</a> also saw record numbers of subscribers. There&#8217;s no sign of a slow down. We wrote 10 blog posts since the<a href="http://atlassian.wpengine.netdna-cdn.com/news/2009/12/its_a_holiday_blog_roundup.html"> last roundup</a>, here are a few highlights:<br />
<strong>Video: Zend Framework and Atlassian tools</strong>. Zend Framework is arguably the most popular PHP framework available, boasting millions of downloads and an active community. Watch this video to learn how Zend is using Atlassian&#8217;s product suite. <a href="http://atlassian.wpengine.netdna-cdn.com/news/2010/01/video_zend_framework_and_atlassian_tools.html">Watch now</a>.<br />
<strong>The big list of Atlassian gadgets</strong>. Want to display your Bamboo plan summary on your JIRA dashboard? Or your FishEye charts on a Confluence page? The big list tells you how. There are gadgets that show information from Confluence, JIRA, GreenHopper, Bamboo, FishEye, Crucible and Clover. <a href="http://atlassian.wpengine.netdna-cdn.com/news/2010/01/the_big_list_of_atlassian_gadgets.html">Read more</a>.<br />
<strong>A tester&#8217;s dream: JIRA &amp; LogDigger</strong>. For anyone who has ever manually tested a web application, you know how much of a pain it can be to retrace your exact steps to reproduce a tricky bug. But that&#8217;s no longer the case when combining LogDigger and JIRA to do your testing. <a href="http://atlassian.wpengine.netdna-cdn.com/jira/2010/01/web-application-testing.html">Read more</a>.<br />
<strong>Bamboo 2.5 released &#8211; improved Maven support, easier build plan setup and more</strong>. Bamboo 2.5 includes better Maven 2 support, faster build plan creation, additional bulk build plan editing capabilities, and over 50 new features, improvements and bug fixes. <a href="http://atlassian.wpengine.netdna-cdn.com/devtools/2010/01/bamboo-continuous-integration-maven-support-improved.html">Read more</a>.<br />
<strong>New Atlassian trademark guidelines</strong>. The new guidelines were written to guide partners, plugin developers, and the community at large how to use Atlassian product names. <a href="http://atlassian.wpengine.netdna-cdn.com/news/2010/01/new_atlassian_trademark_guidelines.html">Read more</a>.<br />
Want to follow all the stories as they happen? Read and subscribe to these blogs:</p>
<ul>
<li>JIRA blog <a href="http://feeds.feedburner.com/JIRABlog">RSS</a></li>
<li>Confluence blog <a href="http://feeds.feedburner.com/ConfluenceBlog">RSS</a></li>
<li>Dev Tools blog <a href="http://feeds.feedburner.com/AtlassianDevToolsBlog">RSS</a></li>
<li>News blog <a href="feed://feeds.feedburner.com/AtlassianBlog">RSS</a></li>
<li>Developers blog <a href="feed://feeds.feedburner.com/AtlassianDeveloperBlog">RSS</a></li>
<li>All blogs <a href="http://feeds.feedburner.com/AllAtlassianBlogs">RSS</a></li>
</ul>
 <img src="http://blogs.atlassian.com/?feed-stats-post-id=17199" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.atlassian.com/2010/01/a_new_years_blog_roundup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The big list of Atlassian gadgets</title>
		<link>http://blogs.atlassian.com/2010/01/the_big_list_of_atlassian_gadgets/</link>
		<comments>http://blogs.atlassian.com/2010/01/the_big_list_of_atlassian_gadgets/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 08:12:30 +0000</pubDate>
		<dc:creator>Sarah Maddox</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Atlassian]]></category>

		<guid isPermaLink="false">http://blogs.atlassian.com/2010/01/the_big_list_of_atlassian_gadgets/</guid>
		<description><![CDATA[We&#8217;ve just published the big list of Atlassian gadgets. It shows all our gadgets, where they come from and where you can put them. Want to display your Bamboo plan summary on your JIRA dashboard? Or your FishEye charts on a Confluence page? The big list tells you how. There are gadgets that show information from Confluence, JIRA, GreenHopper, Bamboo, FishEye, Crucible and Clover. I&#8217;ve just counted &#8211; there are 35 gadgets on the list! Are you wondering what the picture on the left has to do with gadgets? Nothing at all, except that it&#8217;s pretty. I took the photograph in the Manly Dam Reserve, somewhere near this big green arrow. It was early morning, soon after a summer rainstorm. The fierce Ozzie sun had found this twig but had not yet burned off the raindrops.]]></description>
				<content:encoded><![CDATA[<p><span class="mt-enclosure mt-enclosure-image"><img alt="manlydamplants-19december2009-013-650px2-withrightborder.jpg" src="http://atlassian.wpengine.netdna-cdn.com/news/manlydamplants-19december2009-013-650px2-withrightborder.jpg" width="355" height="213" class="mt-image-left" style="float: left;margin: 0 20px 20px 0" /></span>We&#8217;ve just published <a href="http://confluence.atlassian.com/display/GADGETS/All+Atlassian+Gadgets">the big list of Atlassian gadgets</a>. It shows all our gadgets, where they come from and where you can put them.</p>
<p>Want to display your Bamboo plan summary on your JIRA dashboard? Or your FishEye charts on a Confluence page? The big list tells you how. There are gadgets that show information from Confluence, JIRA, GreenHopper, Bamboo, FishEye, Crucible and Clover. I&#8217;ve just counted &#8211; there are 35 gadgets on the list!</p>
<p>Are you wondering what the picture on the left has to do with gadgets? Nothing at all, except that it&#8217;s pretty. I took the photograph in the <a href="http://www.warringah.nsw.gov.au/community/manly_dam.aspx">Manly Dam Reserve</a>, somewhere near <a href="http://maps.google.com.au/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=-33.76412,151.245089&amp;sll=-33.867139,151.207114&amp;sspn=0.053594,0.085487&amp;ie=UTF8&amp;ll=-33.766055,151.24231&amp;spn=0.006707,0.010686&amp;t=h&amp;z=17">this big green arrow</a>. It was early morning, soon after a summer rainstorm. The fierce Ozzie sun had found this twig but had not yet burned off the raindrops.</p>
 <img src="http://blogs.atlassian.com/?feed-stats-post-id=17196" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blogs.atlassian.com/2010/01/the_big_list_of_atlassian_gadgets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
