<?xml version="1.0" encoding="UTF-8"?>
<wiki>
  <body>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class=&quot;caps&quot;&gt;NOTE&lt;/span&gt;&lt;/strong&gt;: The instructions on this page are useful only to developers who have been given permission to release gems on behalf of the SproutCore project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Before you can do a release, you will need to get your machine configured.&lt;/p&gt;
&lt;p&gt;After &lt;a href=&quot;http://rubyforge.org/projects/sproutcore/&quot;&gt;verifying that you are a SproutCore Project Admin at rubyforge&lt;/a&gt;, install the &lt;strong&gt;hoe&lt;/strong&gt; rubygem:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;sudo gem install hoe --include-dependencies
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then do the required &lt;strong&gt;rubyforge&lt;/strong&gt; setup:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;rubyforge setup
rubyforge config
rubyforge login # cache a cookie for further operations
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then install the &lt;strong&gt;sproutcore&lt;/strong&gt; rubygem:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;sudo gem install merb-core -v 0.9.4
sudo gem install sproutcore
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now clone &lt;strong&gt;sproutcore-buildtools&lt;/strong&gt; and &lt;strong&gt;sproutcore-samples&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;cd /path/to/work-directory
git clone git@github.com:sproutit/sproutcore-buildtools.git sproutcore-buildtools
git clone git@github.com:sproutit/sproutcore-samples.git sproutcore-samples
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, obtain the submodules of &lt;strong&gt;sproutcore-buildtools&lt;/strong&gt; and configure them to use the correct origin repository and the &lt;em&gt;master&lt;/em&gt; branch:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;cd /path/to/work-directory/sproutcore-buildtools
git submodule init
git submodule update
cd frameworks/sproutcore
git remote add origin git@github.com:sproutit/sproutcore.git
git checkout master
cd ../prototype
git remote add origin git@github.com:sproutit/sproutcore-prototype.git
git checkout master
cd ../../clients/sc_docs
git remote add origin git@github.com:sproutit/sproutcore-doctool.git
git checkout master
cd ../sc_test_runner
git remote add origin git@github.com:sproutit/sproutcore-testrunner.git
git checkout master
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, remove the (empty) &lt;strong&gt;prototype&lt;/strong&gt; and &lt;strong&gt;sproutcore&lt;/strong&gt; frameworks in &lt;strong&gt;sproutcore-samples&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;cd /path/to/work-directory/sproutcore-samples
rm -R frameworks/prototype frameworks/sproutcore
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Preparing for the Release&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Merge any required changes into the &lt;strong&gt;sproutcore-buildtools&lt;/strong&gt; or &lt;strong&gt;sproutcore&lt;/strong&gt; projects, or any of the other projects (&lt;strong&gt;sc_docs&lt;/strong&gt;, &lt;strong&gt;sc_test_runner&lt;/strong&gt;, &lt;strong&gt;prototype&lt;/strong&gt;, and &lt;strong&gt;sproutcore-samples&lt;/strong&gt;).&lt;/li&gt;
	&lt;li&gt;Make sure you update the &lt;code&gt;HISTORY&lt;/code&gt; and &lt;code&gt;History.txt&lt;/code&gt; files in those projects to list any changes for the new release.&lt;/li&gt;
	&lt;li&gt;Make sure that all your code is committed in git, including any added files.&lt;/li&gt;
	&lt;li&gt;Make sure you&amp;#8217;ve done a quick test of any affected areas.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Run all unit tests on all supported browsers to make sure they pass.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Doing the Release&lt;/h2&gt;
&lt;p&gt;Update the ruby source code to the latest version number:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;cd /path/to/work-directory/sproutcore-buildtools
mate lib/sproutcore/version.rb # edit file in TextMate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, create the gem and deploy it locally (only):&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;cd /path/to/work-directory/sproutcore-buildtools
rake manifest:refresh
git commit -a -m 'Update support files for release 0.9.X' 
git push
rake local_deploy
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should now have the new gem deployed locally on your machine. Run the samples:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;cd /path/to/work-directory/sproutcore-samples
sc-server
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Do a quick check of the functionality for all of the demo apps to make sure none of your changes introduced any regressions.  Depending on what code was changed, you may also need to try generating new apps, etc.&lt;/p&gt;
&lt;p&gt;Once you have completed a quicklook, you can proceed with the actual deployment:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;cd /path/to/work-directory/sproutcore-buildtools
rake release VERSION=0.9.X
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You will need to enter the RubyForge password several times.  Finally, you will need to tag &lt;strong&gt;sproutcore&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;cd /path/to/work-directory/sproutcore-buildtools
git tag REL-0.9.X
git push --tags
cd frameworks/sproutcore
git tag REL-0.9.X
git push --tags
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Announcing the Release&lt;/h2&gt;
&lt;p&gt;At this point you should have SproutCore deployed.  You now need to notify everyone.  The best thing is to do the following:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Prepare a blog entry that highlights the major points and includes the full list of changes for both the framework and the build tools (copied directly from the &lt;code&gt;HISTORY&lt;/code&gt; files.)  Post to the &lt;a href=&quot;http://www.sproutcore.com/blog&quot;&gt;sproutcore.com&lt;/a&gt; blog.&lt;/li&gt;
	&lt;li&gt;Post an email to the sproutcore mailing list notifying everyone of the release, with a link to the blog entry.  Begin the subject line with &lt;code&gt;[ANN]&lt;/code&gt;.&lt;/li&gt;
	&lt;li&gt;Update the topic on the &lt;span class=&quot;caps&quot;&gt;IRC&lt;/span&gt; channel (you must be a channel admin to do so).&lt;/li&gt;
&lt;/ul&gt;</body>
  <created-at type="datetime">2008-08-27T21:03:25-07:00</created-at>
  <id type="integer">49984</id>
  <permalink>releasing-a-sproutcore-gem</permalink>
  <repository-id type="integer">18944</repository-id>
  <title>Releasing a SproutCore Gem</title>
  <updated-at type="datetime">2008-09-21T15:37:22-07:00</updated-at>
  <user-id type="integer">11814</user-id>
</wiki>
