<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.codesion.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Codesion Blog</title>
	
	<link>http://blogs.collab.net</link>
	<description>CollabNet Software Development Blogs</description>
	<lastBuildDate>Tue, 14 May 2013 18:40:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.codesion.com/codesion" /><feedburner:info uri="codesion" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://codesion.com</link><url>http://codesion.com/images/codesion-cloud-services.png</url><title>Codesion</title></image><feedburner:emailServiceId>codesion</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Introducing CollabNet GitEye</title>
		<link>http://feeds.codesion.com/~r/codesion/~3/iq-66C5EaFY/introducing-collabnet-giteye</link>
		<comments>http://blogs.collab.net/cloudforge/introducing-collabnet-giteye#comments</comments>
		<pubDate>Tue, 23 Apr 2013 14:28:44 +0000</pubDate>
		<dc:creator>Mark Phippard</dc:creator>
				<category><![CDATA[CloudForge]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[TeamForge]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[ALM]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://blogs.collab.net/?p=11649</guid>
		<description><![CDATA[<p>Today I have the pleasure of announcing a new graphical client for Git that we have been working on &#8212; CollabNet GitEye. GitEye is a Java GUI client for Git written on top of the Eclipse RCP framework. We are providing downloads for Windows, OSX and Linux though we can theoretically produce builds for a few other operating systems as well if the demand is there. Leveraging the Eclipse RCP framework allows us to provide a native GUI experience on all of these different operating systems, while still benefiting from the cross platform nature of Java. This approach also allows ... <a href="http://blogs.collab.net/cloudforge/introducing-collabnet-giteye">LEARN MORE &#187;</a></p><p>The post <a href="http://blogs.collab.net/cloudforge/introducing-collabnet-giteye">Introducing CollabNet GitEye</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/04/ColalbNet-GitEye-favicon-with-shield-256x256.png"><img class="alignleft size-full wp-image-11651" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/04/ColalbNet-GitEye-favicon-with-shield-256x256.png" alt="ColalbNet GitEye favicon with shield 256x256 Introducing CollabNet GitEye" width="256" height="256" title="Introducing CollabNet GitEye" /></a>Today I have the pleasure of announcing a new graphical client for Git that we have been working on &#8212; <a title="CollabNet GitEye" href="http://www.giteyeapp.com" target="_blank">CollabNet GitEye</a>.</p>
<p>GitEye is a Java GUI client for Git written on top of the Eclipse <a title="Eclipse RCP" href="http://wiki.eclipse.org/index.php/Rich_Client_Platform" target="_blank">RCP</a> framework. We are providing downloads for Windows, OSX and Linux though we can theoretically produce builds for a few other operating systems as well if the demand is there. Leveraging the Eclipse RCP framework allows us to provide a native GUI experience on all of these different operating systems, while still benefiting from the cross platform nature of Java. This approach also allows us to leverage a number of existing Eclipse plugins, such as <a title="EGit" href="http://www.eclipse.org/egit" target="_blank">EGit</a> and our own <a title="CollabNet Desktop" href="http://desktop-eclipse.open.collab.net" target="_blank">CollabNet Desktop</a>. That said, it is important to note for those that are IDE-averse, that using the Eclipse RCP framework does not mean we are using or repackaging the Eclipse IDE itself. We are simply building this client on the same low-level framework and libraries upon which the Eclipse IDE is built. A framework that we happen to think allows us to build an outstanding and highly functional Git client.</p>
<p>Enough of the low-level details, and more about GitEye. First off, GitEye is a full-featured Git client with all of the options you would expect in a graphical client. Most of the common Git actions are available from the GUI, such as clone, push, fetch, pull, merge, rebase, reset etc. There is a nice graphical view of your History and Annotations and there is a lot of tactical usage of git diff to provide context of changes within the UI as well as a full-blown graphical compare and merge tool. GitEye is a Git client, not an IDE, so the expectation is that you are using other tools and editors to work on your code. GitEye provides a simple text editor for making quick changes, but it also provides context-options to open up your Terminal or native File Manager to the selected location in your file system. You can also define custom commands which allows you to launch other tools. As an example, I work on OSX and use TextMate a lot. So I can right-click on folders or files and open them in TextMate to edit.</p>
<p>If these were all of the features of GitEye, it would be worthy of trying out, but really this is just scratching the surface of what is there. GitEye includes support for GitHub, including Pull Requests, Issues and Gists. All Git clients can presumably clone and push with GitHub, but we go well beyond that in our integration by providing native GUI support for these tools via the <a title="GitHub Eclipse" href="http://eclipse.github.com/" target="_blank">GitHub Eclipse plugin</a>. Likewise, we have complete support for <a title="CloudForge" href="http://www.cloudforge.com" target="_blank">CloudForge</a> and <a title="TeamForge" href="http://www.collab.net/products/teamforge" target="_blank">TeamForge</a> and the agile planning tools in TeamForge. So besides being able to edit artifacts from within GitEye you can also use tools like the Agile Planning Board and Task Board from TeamForge. The GitHub and TeamForge tools are all built on top of the Eclipse <a href="http://www.eclipse.org/mylyn" target="_blank">Mylyn</a> framework, so you also have the ability to install support for other trackers, such as Bugzilla, Trac and JIRA from within the application. Additional features that are included are support for Gerrit code reviews and Jenkins/Hudson build monitoring.</p>
<p>Keep your eyes open for future blog posts that describe these individual features in greater detail. Hopefully this was enough to entice you to want to try GitEye. You will be happy to learn that GitEye is Free. Learn more about the features and download it now here: <a title="GitEye" href="http://www.giteyeapp.com" target="_blank">http://www.giteyeapp.com</a></p>
<p>The post <a href="http://blogs.collab.net/cloudforge/introducing-collabnet-giteye">Introducing CollabNet GitEye</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p><img src="http://feeds.feedburner.com/~r/codesion/~4/iq-66C5EaFY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.collab.net/cloudforge/introducing-collabnet-giteye/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.collab.net/cloudforge/introducing-collabnet-giteye</feedburner:origLink></item>
		<item>
		<title>Need a quick fix? Simple solutions to SVN, TeamForge and Git</title>
		<link>http://feeds.codesion.com/~r/codesion/~3/cxEE2OLmR5A/simple-solutions-to-svn-teamforge-git</link>
		<comments>http://blogs.collab.net/subversion/simple-solutions-to-svn-teamforge-git#comments</comments>
		<pubDate>Wed, 03 Apr 2013 15:00:11 +0000</pubDate>
		<dc:creator>Jesse Yowell</dc:creator>
				<category><![CDATA[CloudForge]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[TeamForge]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[TeamForge Project]]></category>

		<guid isPermaLink="false">http://blogs.collab.net/?p=11495</guid>
		<description><![CDATA[<p>Support sees quite a few issues, and while impossible to solve everything immediately (or through a blog I may be writing), I&#8217;ve found some common issues that you may encounter while wrangling code on CloudForge: - TeamForge login: Do you have a long domain name? While we mention that you must use the &#8216;domain_username&#8217; structure for logging in, what you might not know is that we&#8217;ll truncate login names longer than 32 characters. For example: if I have the organization &#8216;excellentbusinessorganization&#8217; and my username is &#8216;jesseyowell&#8217;, you will see under the TeamForge login page that your login name may be ... <a href="http://blogs.collab.net/subversion/simple-solutions-to-svn-teamforge-git">LEARN MORE &#187;</a></p><p>The post <a href="http://blogs.collab.net/subversion/simple-solutions-to-svn-teamforge-git">Need a quick fix? Simple solutions to SVN, TeamForge and Git</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>Support sees quite a few issues, and while impossible to solve everything immediately (or through a blog I may be writing), I&#8217;ve found some common issues that you may encounter while wrangling code on CloudForge:<strong></strong></p>
<p><strong>- TeamForge login</strong>: Do you have a long domain name? While we mention that you must use the &#8216;domain_username&#8217; structure for logging in, what you might not know is that we&#8217;ll truncate login names longer than 32 characters. For example: if I have the organization &#8216;excellentbusinessorganization&#8217; and my username is &#8216;jesseyowell&#8217;, you will see under the TeamForge login page that your login name may be truncated to something like: &#8216;excellentbusinessorg_jesseyowell&#8217;. An easier way to copy your new login for TeamForge can be found under the &#8216;Services &gt; TeamForge&#8217; under &#8216;Quick URLs&#8217;</p>
<p><a href="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/03/teamforge_login.png"><img class="aligncenter size-full wp-image-11498" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/03/teamforge_login.png" alt="teamforge login Need a quick fix? Simple solutions to SVN, TeamForge and Git" width="305" height="209" title="Need a quick fix? Simple solutions to SVN, TeamForge and Git" /></a> <strong></strong></p>
<p><strong>- SVN UUID mismatch: </strong> Sometimes you may see an error like this: &#8220;Repository UUID &#8216;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&#8217; doesn&#8217;t match expected UUID &#8216;yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy<strong>&#8221; &#8212; </strong>This happens when your current local checked out repo doesn&#8217;t match the UUIDs on our servers. Maybe you had to move your repository, or create a new one.. whatever the case may be, you can just do a fresh checkout of the repository from CloudForge, and transfer anything you may be currently working on from your old checked out repository.</p>
<p>&nbsp;</p>
<p>- <strong>&#8220;My newly created Subversion/Git repo is still unavailable. I&#8217;ve deleted it and now I&#8217;m unable to recreate it!&#8221;</strong> &#8212; If for whatever reason your newly created repository isn&#8217;t available after 10-15 minutes, please do not delete it! This will create extra deletion jobs and slow down the entire process. Behind the scenes, we have creation / deletion scripts that do a lot of the manual legwork of building and tearing down projects and repositories. </p>
<p>If for whatever reason you are unable to get your new repository running, don&#8217;t hesitate and contact support@cloudforge.com right away!</p>
<p>The post <a href="http://blogs.collab.net/subversion/simple-solutions-to-svn-teamforge-git">Need a quick fix? Simple solutions to SVN, TeamForge and Git</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p><img src="http://feeds.feedburner.com/~r/codesion/~4/cxEE2OLmR5A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.collab.net/subversion/simple-solutions-to-svn-teamforge-git/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.collab.net/subversion/simple-solutions-to-svn-teamforge-git</feedburner:origLink></item>
		<item>
		<title>Tips on Git: De-fanging ‘Git Push’</title>
		<link>http://feeds.codesion.com/~r/codesion/~3/pUDNlPwFPxw/tips-on-git-de-fanging-git-push</link>
		<comments>http://blogs.collab.net/cloudforge/tips-on-git-de-fanging-git-push#comments</comments>
		<pubDate>Fri, 22 Mar 2013 14:30:22 +0000</pubDate>
		<dc:creator>Jack Repenning</dc:creator>
				<category><![CDATA[CloudForge]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[CollabNet]]></category>
		<category><![CDATA[collabnet cloud services]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git branch]]></category>
		<category><![CDATA[Git Command]]></category>
		<category><![CDATA[Git command line]]></category>
		<category><![CDATA[Git Push]]></category>

		<guid isPermaLink="false">http://blogs.collab.net/?p=11404</guid>
		<description><![CDATA[<p>Ever had Git commit a branch you didn&#8217;t intend? % git co branch-1 % (workee workee workee) % (interrupt) % git ci -am&#8221;Half the change of the primary task&#8221; % git co branch-2 % (workee workee workee) % git ci -am&#8221;The whole change of the interrupt % git push babble babble babble 9e7f6d7..35935af branch-1 -&#62; branch-1 ccb352f..66c8c36 branch-2 -&#62; branch-2 Oh no! Not branch1! It&#8217;s not finished yet!!! What Git has just done is technically called &#8220;push by matching&#8221;: any branches in your repo that have names matching branches in the origin repo get pushed. The confusing thing here is ... <a href="http://blogs.collab.net/cloudforge/tips-on-git-de-fanging-git-push">LEARN MORE &#187;</a></p><p>The post <a href="http://blogs.collab.net/cloudforge/tips-on-git-de-fanging-git-push">Tips on Git: De-fanging &#8216;Git Push&#8217;</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>Ever had Git commit a branch you didn&#8217;t intend?</p>
<blockquote><p>% git co branch-1<br />
% (workee workee workee)<br />
% (interrupt)<br />
% git ci -am&#8221;Half the change of the primary task&#8221;<br />
% git co branch-2<br />
% (workee workee workee)<br />
% git ci -am&#8221;The whole change of the interrupt<br />
% git push<br />
babble babble babble<br />
9e7f6d7..35935af branch-1 -&gt; branch-1<br />
ccb352f..66c8c36 branch-2 -&gt; branch-2<br />
<strong>Oh no! Not branch1! It&#8217;s not finished yet!!!</strong></p></blockquote>
<p>What Git has just done is technically called &#8220;push by matching&#8221;: any branches in your repo that have names matching branches in the origin repo get pushed.</p>
<p>The confusing thing here is that some Git commands operate on just the files you have checked out, but others operate on the whole repository. This is particularly confusing (and can be particularly unfortunate) because the very common &#8220;checkout,&#8221; &#8220;pull,&#8221; and &#8220;commit&#8221; commands all operate on &#8220;just the checkouts,&#8221; but the also very common &#8220;push&#8221; command is &#8220;whole-repository.&#8221;</p>
<p>There are reasons for this, some of them good, and with enough practice you can get used to it, and soon you, too, can blithely call stuff like this &#8220;the simplest option&#8221;:</p>
<blockquote><p><a href="http://longair.net/blog/2011/02/27/an-asymmetry-between-git-pull-and-git-push/" target="_blank">git push github add-menu:new-feature2</a></p></blockquote>
<p>But if you&#8217;d like your &#8220;simplest options&#8221; a bit simpler, or maybe if you think it&#8217;s the job of the tool to accommodate the user, not vice versa, then you&#8217;re in luck: after a lot of discussion, the <a href="http://git-blame.blogspot.com/2012/03/summary-of-discussion-on-git-push.html" target="_blank">git developers</a> have come around to your way of thinking! Git is now being changed to do, by default, what you meant all along.</p>
<p>Since Git was originally released with different behavior &#8212; and, indeed, since the original behavior actually does make sense for some users and situations  &#8211; the conversion process is rather gradual. With any version of Git after 1.6.3, there&#8217;s a new configuration option to control this behavior, and some new messages that hopefully lead you to a resolution. The configuration options are:</p>
<blockquote><p><strong>Before git version 1.6.3</strong>: there are no options, <strong>git push</strong> does &#8216;matching&#8217;<br />
<strong>Beginning in version 1.6.3</strong>: You have your choice of nothing, matching (the default), tracking (recommended),  or current<br />
<strong>Beginning in version 1.7.4.2</strong>: nothing, matching (default), upstream (recommended), tracking (deprecated), or current<br />
<strong>Beginning in version 1.7.11</strong>: nothing, matching (default), upstream (recommended #1), simple (recommended #2), or current<br />
<strong>Beginning in version 2.0</strong>: nothing, matching, upstream, simple (default, recommended), or current</p></blockquote>
<p>What do those options mean?</p>
<blockquote><p><strong>nothing</strong>: Don&#8217;t do anything for &#8220;git push&#8221;; make the user explicitly say what they want pushed<br />
<strong>matching</strong>: Do that branch-name-matching trick<br />
<strong>tracking</strong> (later renamed to <strong>upstream</strong>):  push the current branch to its upstream branch<br />
<strong>simple</strong>: like upstream, but only if the local and upstream branches have the same name<br />
<strong>current</strong>: push the current branch to a central branch of the same name (even if they aren&#8217;t marked as tracking/upstream)</p></blockquote>
<p>Which do you use? Most likely either &#8220;matching&#8221; or &#8220;simple&#8221;:</p>
<blockquote><p>If you like the &#8220;all branches with matching names&#8221; behavior, do &#8220;git config &#8211;global push.default matching&#8221;, and you&#8217;ll safely keep doing that even when you upgrade to git version 2.0 (which will have a different default).</p>
<p>If you want to begin living in the brave new world of 2.0, do &#8220;git config &#8211;global push.default simple&#8221;. If you get the error &#8220;error: Malformed value for push.default: simple&#8221;, your Git is kinda old. The best thing would be to upgrade Git, if you can; otherwise use &#8220;upstream&#8221; (or even, if you still get the error, &#8220;tracking&#8221;).</p></blockquote>
<p>Personally, I&#8217;m a simple guy, and &#8220;push.default simple&#8221; is just what I need. I&#8217;m delighted that the community now sees things my way, and I&#8217;ve already set this default.</p>
<p>How about you? If you prefer one of the other options, can you explain why? It would be particularly interesting if you can (concisely!) describe a situation that really demands one of the other behaviors. Sound off below.</p>
<p>The post <a href="http://blogs.collab.net/cloudforge/tips-on-git-de-fanging-git-push">Tips on Git: De-fanging &#8216;Git Push&#8217;</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p><img src="http://feeds.feedburner.com/~r/codesion/~4/pUDNlPwFPxw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.collab.net/cloudforge/tips-on-git-de-fanging-git-push/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.collab.net/cloudforge/tips-on-git-de-fanging-git-push</feedburner:origLink></item>
		<item>
		<title>Beginning a CloudForge Git client using Thor and Interact gems</title>
		<link>http://feeds.codesion.com/~r/codesion/~3/Yy8f6J1AjFo/beginning-a-cloudforge-git-client-using-thor-and-interact-gems</link>
		<comments>http://blogs.collab.net/cloudforge/beginning-a-cloudforge-git-client-using-thor-and-interact-gems#comments</comments>
		<pubDate>Tue, 12 Mar 2013 17:52:30 +0000</pubDate>
		<dc:creator>Patrick Wolf</dc:creator>
				<category><![CDATA[CloudForge]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[cloud services]]></category>
		<category><![CDATA[collabnet cloud services]]></category>
		<category><![CDATA[command line interfaces]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git cloning]]></category>
		<category><![CDATA[git glone]]></category>
		<category><![CDATA[Git Repositories]]></category>
		<category><![CDATA[Interact]]></category>
		<category><![CDATA[parameters]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[scrips]]></category>
		<category><![CDATA[Thor]]></category>

		<guid isPermaLink="false">http://blogs.collab.net/?p=11192</guid>
		<description><![CDATA[<p>One of the advantages to blogging is the opportunity to play with and write about technologies that I don&#8217;t normally interact with day-to-day. This is especially true of many of the great gems available for Ruby. Building on Jack&#8217;s blog post about extending CloudForge via the API I decided to play with a few gems I haven&#8217;t had a chance to play with yet: Thor and Interact. gem install thor interact Thor is an awesome toolkit for building robust command-line interfaces (CLIs). It&#8217;s somewhat similar to Rake but provides more structure specific for DRY command-line scripting. It&#8217;s also an essential ... <a href="http://blogs.collab.net/cloudforge/beginning-a-cloudforge-git-client-using-thor-and-interact-gems">LEARN MORE &#187;</a></p><p>The post <a href="http://blogs.collab.net/cloudforge/beginning-a-cloudforge-git-client-using-thor-and-interact-gems">Beginning a CloudForge Git client using Thor and Interact gems</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>One of the advantages to blogging is the opportunity to play with and write about technologies that I don&#8217;t normally interact with day-to-day. This is especially true of many of the great gems available for Ruby. Building on Jack&#8217;s <a title="Extending CloudForge with the CloudForge REST API" href="http://blogs.collab.net/cloudforge/extending-cloudforge-with-the-cloudforge-rest-api" target="_blank">blog post</a> about extending CloudForge via the API I decided to play with a few gems I haven&#8217;t had a chance to play with yet: Thor and Interact.</p>
<blockquote>
<pre>gem install thor interact</pre>
</blockquote>
<p><a title="What is Thor?" href="http://whatisthor.com/" target="_blank">Thor</a> is an awesome toolkit for building robust command-line interfaces (CLIs). It&#8217;s somewhat similar to Rake but provides more structure specific for DRY command-line scripting. It&#8217;s also an essential part of Bundler and Rails under-the-covers.</p>
<p><a title="Interact" href="http://rubygems.org/gems/interact" target="_blank">Interact</a> provides an API for interacting with users beyond simply parsing ARGV. It allows a CLI to ask multiple-choice questions, prompt for passwords, set defaults, and even rewind questions. It is part of the VMC client used to configure and interact with CloudFoundry. The combination of these two gems provides a great deal of flexibility for user-interaction.</p>
<p>My goal in this blog is to create a simple CLI that integrates Thor, Interact and the CloudForge API, making it possible to clone Git repositories by choosing from a list of CloudForge projects.  Git is pretty simple to use as it is but this program provides a good chance to demonstrate these gems and our API. I&#8217;ll include a few other gems as well to make things a little easier. I&#8217;m also going to start my script with a ruby directive that automatically invokes my script within Ruby when executed.</p>
<blockquote><pre>#!/usr/bin/env ruby
require 'thor'
require 'interact'
require 'yaml'
require 'rest-client'
require 'json'</blockquote></pre>
<p>With my required gems in-place I&#8217;m going to start with a simple class method called &#8220;config&#8221; to save my configuration settings. This will save my CloudForge credentials to a configuration file in my HOME directory so I won&#8217;t need to enter them every time.</p>
<blockquote><pre>class CFGit &lt; Thor
  
  # Set up a configuration file so credentials don't need to be entered again.
  desc "config", "configure the domain, username and password"
  option :domain, :aliases =&gt; "-d"
  option :username, :aliases =&gt; "-u"
  option :password, :aliases =&gt; "-pw"
  
  def config 
    # Open a configuration file in the user's home directory
    open(ENV['HOME']+'/.cfgit_config', 'w') do |f|
      # Throw the configuration settings into the fiile using Yaml
      f.write Parameters.new.param_config(options).to_yaml
    end
end</blockquote></pre>
<p>With these few lines Thor automatically creates a &#8216;config&#8217; command with option flags and provides help documentation.</p>
<div id="attachment_11242" class="wp-caption aligncenter" style="width: 310px"><a href="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/03/config.png"><img class="size-medium wp-image-11242" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/03/config-300x256.png" alt="config 300x256 Beginning a CloudForge Git client using Thor and Interact gems" width="300" height="256" title="Beginning a CloudForge Git client using Thor and Interact gems" /></a><p class="wp-caption-text">Thor provides full help context and option flags</p></div>
<p>This would work as-is except I am calling a &#8220;Parameters&#8221; class to set my options in my Yaml file. My Parameters class interactively questions the user if any configuration settings are not included.</p>
<blockquote>
<pre>class Parameters
  include Interactive
  
  def param_config(options)
    
    cf_config=options.dup
    cf_config[:domain] ||= ask "Account Domain"
    cf_config[:username] = ask "Username"
    cf_config[:password] = ask "Password"
    
    return cf_config
      
  end</pre>
</blockquote>
<p>Now, if I call &#8216;cfgit config&#8217; I can optionally set my Domain, Username, and Password as command arguments or the program will interactively prompt me to enter them.</p>
<div id="attachment_11244" class="wp-caption aligncenter" style="width: 310px"><a href="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/03/config_prompt.png"><img class="size-medium wp-image-11244" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/03/config_prompt-300x152.png" alt="config prompt 300x152 Beginning a CloudForge Git client using Thor and Interact gems" width="300" height="152" title="Beginning a CloudForge Git client using Thor and Interact gems" /></a><p class="wp-caption-text">Interact prompts the user to enter values for the parameters</p></div>
<p>This saves my settings into the &#8220;cfgit_config&#8221; file in my HOME directory. Rather than saving my password locally in the file I created User API Key on my Settings page in CloudForge. This key is used only for API calls and replaces my password. I also want password storage to be optional so I&#8217;ll make Password an option for all command arguments.</p>
<p>Now, I want this application to actually do something other than just saving parameters to a file. I&#8217;m going to add a &#8220;clone&#8221; function that will allow the user to select a CloudForge project from a list of all projects, retrieve the &#8216;ssh&#8217; url for the Git repository in that project and finally clone that Git repository from CloudForge into the present working directory.</p>
<p>First, I need to add a &#8220;clone&#8221; function to my main Thor class that allows me override any pre-set configuration credentials. i.e. I can skip adding my domain, username, or password into my configuration file and enter them each time I run clone.</p>
<blockquote>
<pre># clone a specific repository to the current directory
desc "clone", "clone a repository"
option :project, :aliases =&gt; "-p"
option :branch, :aliases =&gt; "-b", :default =&gt; 'master'
option :domain, :aliases =&gt; "-d"
option :username, :aliases =&gt; "-u"
option :password, :aliases =&gt; "-pw"

	def clone
		# Make sure that all parameters are available
		clone_options = Parameters.new.param_clone(options)

		# get the git ssh url for the selected project
		git_url = CF_Client.git_url(clone_options)

		unless git_url.nil?
  			`git clone #{git_url} -b #{clone_options[:branch]}`
		else
  			puts "This project does not contain a Git repository"
		end
	end
end</pre>
</blockquote>
<p>I&#8217;m still relying on my Parameters class to validate that all of the required parameters are available so I&#8217;ll have to add that method to my Parameters class.</p>
<blockquote>
<pre>def param_clone(options)

	cf_config = YAML::load(File.open(ENV['HOME']+'/.cfgit_config'))
	clone_options = options.dup

	clone_options[:domain] ||= cf_config[:domain]
	clone_options[:username] ||= cf_config[:username]
	clone_options[:password] ||= cf_config[:password]
	clone_options[:project] ||= projects(clone_options[:domain], clone_options[:username], clone_options[:password])
	return clone_options

end

def projects (domain, username, password)

	project_list = ask "Please pick a project",
	:choices =&gt; CF_Client.list_projects(domain, username, password),
	:indexed =&gt; true

end
end</pre>
</blockquote>
<p>Just for fun, I added a second method that uses Interact and the CloudForge API to list all available projects as an indexed multiple-choice list. This works when there are few projects available in the account but I wouldn&#8217;t recommend it with a long list of projects. My client for the CloudForge API is pretty simple with just two methods:</p>
<blockquote>
<pre>module CF_Client
  
  DEVORG = 'spiderpig'
  DEVKEY = '1e38bb5ffcf2fc08cff3800eb286fd4eaad60dea'
  URL = "https://api.cloudforge.com/api/1/"
  
  def self.list_projects(domain, username, password)
	projects=[]
	projects = JSON.parse (RestClient.get "#{URL}projects.json", {:params =&gt; {"credentials[developerOrganization]" =&gt; DEVORG, 
                                    "credentials[developerKey]" =&gt; DEVKEY,
                                    "credentials[domain]" =&gt; domain,
                                    "credentials[login]" =&gt; username,
                                    "credentials[password]" =&gt; password}})
    
    project_names = projects.map{|p| p["shortName"]}
	
  end
  
  def self.git_url(options)
    quick_link = nil
    services = JSON.parse (RestClient.get "#{URL}services.json", {:params =&gt; {"credentials[developerOrganization]" =&gt; DEVORG, 
                                    "credentials[developerKey]" =&gt; DEVKEY,
                                    "credentials[domain]" =&gt; options[:domain],
                                    "credentials[login]" =&gt; options[:username],
                                    "credentials[password]" =&gt; options[:password]}})
  
    services.each do |srv|
      if /#{options[:project].to_s}/ =~ srv["accessUrl"]["ssh"] 
        quick_link = srv["accessUrl"]["ssh"]
      end
    end
    return quick_link
  end
end</pre>
</blockquote>
<div id="attachment_11243" class="wp-caption aligncenter" style="width: 310px"><a href="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/03/clone.png"><img class="size-medium wp-image-11243" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/03/clone-300x256.png" alt="clone 300x256 Beginning a CloudForge Git client using Thor and Interact gems" width="300" height="256" title="Beginning a CloudForge Git client using Thor and Interact gems" /></a><p class="wp-caption-text">A multiple-choice list of projects to clone</p></div>
<p>The last step is to simply choosing project by name or number and it is immediately cloned into my working directory. This application can be easily extended to perform many other features with CloudForge and Git such as &#8220;Forking&#8221; repositories from one Project to another, creating new Git repositories, or anything else you can think up. I had fun creating this sample application and I hope it helps someone to extend their CloudForge usage or simply start using Thor or Interact.</p>
<p>Below is the full source of this application. You will need to change the DEVORG and DEVKEY constants to your own settings to make it work. If you don&#8217;t already have a Git repository on CloudForge click <a href="https://app.cloudforge.com/trial_signup/new?source=git-collab" title="CloudForge Git" target="_blank">HERE</a> and get started today.</p>
<blockquote>
<pre>#!/usr/bin/env ruby
require 'thor'
require 'interact'
require 'yaml'
require 'rest-client'
require 'json'


# A chance to use the Thor gem for user interaction
class CFGit  "-d"
  option :username, :aliases =&gt; "-u"
  option :password, :aliases =&gt; "-pw"
  
  def config 
    # Open a configuration file in the user's home directory
    open(ENV['HOME']+'/.cfgit_config', 'w') do |f|
      # Throw the configuration settings into the fiile using Yaml
      f.write Parameters.new.param_config(options).to_yaml
    end
  end
  
  # clone a specific repository to the current directory
  desc "clone", "clone a repository"
  option :project, :aliases =&gt; "-p"
  option :branch, :aliases =&gt; "-b", :default =&gt; 'master'
  option :domain, :aliases =&gt; "-d"
  option :username, :aliases =&gt; "-u"
  option :password, :aliases =&gt; "-pw"
  
  def clone
    # Make sure that all parameters are available
    clone_options = Parameters.new.param_clone(options)
    
    # get the git ssh url for the selected project
    git_url = CF_Client.git_url(clone_options)
    
    unless git_url.nil?
      `git clone #{git_url} -b #{clone_options[:branch]}`
    else
      puts "This project does not contain a Git repository"
    end
  end
end

class Parameters
  include Interactive
  
  def param_config(options)
    
    cf_config=options.dup
    cf_config[:domain] ||= ask "Account Domain"
    cf_config[:username] = ask "Username"
    cf_config[:password] = ask "Password"
	return cf_config
      
  end
  
  def param_clone(options)
    
    cf_config = YAML::load(File.open(ENV['HOME']+'/.cfgit_config'))
    clone_options = options.dup
	clone_options[:domain] ||= cf_config[:domain]
    clone_options[:username] ||= cf_config[:username]
    clone_options[:password] ||= cf_config[:password]
	clone_options[:project] ||= projects(clone_options[:domain], clone_options[:username], clone_options[:password])
	return clone_options
    
  end
  
  def projects (domain, username, password)
    
    project_list = ask "Please pick a project",
    :choices =&gt; CF_Client.list_projects(domain, username, password),
    :indexed =&gt; true
    
  end
  
end

module CF_Client
  
  DEVORG = 'spiderpig'
  DEVKEY = '1e38bb5ffcf1ec08daf3800eg286fd4eaad60dea'
  URL = "https://api.cloudforge.com/api/1/"
  
  def self.list_projects(domain, username, password)
	projects=[]
	projects = JSON.parse (RestClient.get "#{URL}projects.json", {:params =&gt; {"credentials[developerOrganization]" =&gt; DEVORG, 
                                    "credentials[developerKey]" =&gt; DEVKEY,
                                    "credentials[domain]" =&gt; domain,
                                    "credentials[login]" =&gt; username,
                                    "credentials[password]" =&gt; password}})
    
    project_names = projects.map{|p| p["shortName"]}
  end
  
  def self.git_url(options)
	quick_link = nil
    services = JSON.parse (RestClient.get "#{URL}services.json", {:params =&gt; {"credentials[developerOrganization]" =&gt; DEVORG, 
                                    "credentials[developerKey]" =&gt; DEVKEY,
                                    "credentials[domain]" =&gt; options[:domain],
                                    "credentials[login]" =&gt; options[:username],
                                    "credentials[password]" =&gt; options[:password]}})
  
    services.each do |srv|
      if /#{options[:project].to_s}/ =~ srv["accessUrl"]["ssh"] 
        quick_link = srv["accessUrl"]["ssh"]
      end
    end
    return quick_link
  end
end

CFGit.start(ARGV)</pre>
</blockquote>
<p>The post <a href="http://blogs.collab.net/cloudforge/beginning-a-cloudforge-git-client-using-thor-and-interact-gems">Beginning a CloudForge Git client using Thor and Interact gems</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p><img src="http://feeds.feedburner.com/~r/codesion/~4/Yy8f6J1AjFo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.collab.net/cloudforge/beginning-a-cloudforge-git-client-using-thor-and-interact-gems/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.collab.net/cloudforge/beginning-a-cloudforge-git-client-using-thor-and-interact-gems</feedburner:origLink></item>
		<item>
		<title>Building Open-Source Software Engineering Tools</title>
		<link>http://feeds.codesion.com/~r/codesion/~3/V30qMt2RYiU/building-open-source-software-engineering-tools</link>
		<comments>http://blogs.collab.net/subversion/building-open-source-software-engineering-tools#comments</comments>
		<pubDate>Wed, 27 Feb 2013 19:36:54 +0000</pubDate>
		<dc:creator>Jack Repenning</dc:creator>
				<category><![CDATA[CloudForge]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[ArgoUML]]></category>
		<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[bug tracking]]></category>
		<category><![CDATA[client tools]]></category>
		<category><![CDATA[cloud development]]></category>
		<category><![CDATA[cloud services]]></category>
		<category><![CDATA[CollabNet]]></category>
		<category><![CDATA[collabnet cloud services]]></category>
		<category><![CDATA[document sharing]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[engineering tools]]></category>
		<category><![CDATA[Lawngnome]]></category>
		<category><![CDATA[open source community]]></category>
		<category><![CDATA[open source software]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Perlcritic]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ReadySET]]></category>
		<category><![CDATA[Scarab]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tigris]]></category>
		<category><![CDATA[Tigris community]]></category>
		<category><![CDATA[Tigris svn]]></category>
		<category><![CDATA[tigris.org]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://blogs.collab.net/?p=11072</guid>
		<description><![CDATA[<p>Do you know about CollabNet&#8217;s Tigris.Org community?  The birth-place of Subversion and home of many Subversion client tools, Tigris also hosts the communities behind the popular UML design tool ArgoUML, the Perl style and correctness tool Perlcritic, the PHP object-relational database Lawngnome, the highly customizable bug tracker Scarab, process tools like ReadySET, and lots more. Named for the great river Tigris, birthplace of civilizations and stories, the Tigris site provides fertile, well-watered soil for a new kind of community. A Tigris project collects together the mail lists, wiki, bug tracking, document sharing and storage, and source code &#8212; a well-equipped and ... <a href="http://blogs.collab.net/subversion/building-open-source-software-engineering-tools">LEARN MORE &#187;</a></p><p>The post <a href="http://blogs.collab.net/subversion/building-open-source-software-engineering-tools">Building Open-Source Software Engineering Tools</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tigris.org"><img class="alignleft  wp-image-11074" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/logo-96.png" alt="logo 96 Building Open Source Software Engineering Tools" width="96" height="96" title="Building Open Source Software Engineering Tools" /></a>Do you know about CollabNet&#8217;s Tigris.Org community?  The birth-place of Subversion and home of many Subversion client tools, Tigris also hosts the communities behind the popular UML design tool <a title="ArgoUML" href="http://argouml.tigris.org" target="_blank">ArgoUML</a>, the Perl style and correctness tool <a title="PerlCritic" href="http://perlcritic.tigris.org" target="_blank">Perlcritic</a>, the PHP object-relational database <a title="Lawn Gnome" href="http://lawngnome.tigris.org" target="_blank">Lawngnome</a>, the highly customizable bug tracker <a title="Scarab" href="http://scarab.tigris.org" target="_blank">Scarab</a>, process tools like <a title="ReadySET" href="http://readyset.tigris.org" target="_blank">ReadySET</a>, and lots more.</p>
<p>Named for the great river Tigris, birthplace of civilizations and stories, the Tigris site provides fertile, well-watered soil for a new kind of community.</p>
<p>A Tigris project collects together the <a title="Users at ArgoUML" href="http://argouml.tigris.org/ds/viewForumSummary.do?dsForumId=449" target="_blank">mail lists</a>, <a title="Subclipse Wiki" href="http://subclipse.tigris.org/wiki/" target="_blank">wiki</a>, <a title="Subversion bugs" href="http://subversion.tigris.org/issues/buglist.cgi?resort=1&amp;component=subversion;issue_status=UNCONFIRMED;issue_status=NEW;issue_status=STARTED;issue_status=REOPENED;issue_status=RESOLVED;issue_status=VERIFIED;issue_status=CLOSED;email1=;emailtype1=substring;emailassigned_to1=1;email2=;emailtype2=substring;emailreporter2=1;issueidtype=include;issue_id=;changedin=;votes=;chfieldfrom=;chfieldto=Now;chfieldvalue=;short_desc=;short_desc_type=substring;long_desc=;long_desc_type=substring;issue_file_loc=;issue_file_loc_type=substring;status_whiteboard=;status_whiteboard_type=substring;keywords=;keywords_type=anytokens;field0-0-0=noop;type0-0-0=noop;value0-0-0=;newqueryname=;Submit%20query=Submit%20query&amp;order=issues.issue_status%2C%20issues.issue_id" target="_blank">bug tracking</a>, <a title="Subclipse documents" href="http://subclipse.tigris.org/servlets/ProjectDocumentList" target="_blank">document sharing and storage</a>, and <a title="Perlcritic repository" href="http://perlcritic.tigris.org/source/browse/perlcritic/" target="_blank">source code</a> &#8212; a well-equipped and integrated site for an open-source community.</p>
<p>Membership in the Tigris community is completely free  &#8211; and  optional: you can browse around, view, and even download or check out most projects anonymously.  Projects are carefully selected for relevance to the Tigris Mission: Open-Source creation of Software Engineering Tools.</p>
<p>Come visit us: <a title="Tigris" href="http://www.tigris.org" target="_blank">http://www.tigris.org</a>.</p>
<p>If you&#8217;d like to host your project here, check out <a title="Start   your project" href="http://www.tigris.org/#start-your-project" target="_blank">http://www.tigris.org/#start-your-project</a>.</p>
<p>The post <a href="http://blogs.collab.net/subversion/building-open-source-software-engineering-tools">Building Open-Source Software Engineering Tools</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p><img src="http://feeds.feedburner.com/~r/codesion/~4/V30qMt2RYiU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.collab.net/subversion/building-open-source-software-engineering-tools/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.collab.net/subversion/building-open-source-software-engineering-tools</feedburner:origLink></item>
		<item>
		<title>Help us help you through CloudForge’s Support Portal!</title>
		<link>http://feeds.codesion.com/~r/codesion/~3/7iElV6n53Uw/how-to-further-utilize-cloudforge-support</link>
		<comments>http://blogs.collab.net/cloudforge/how-to-further-utilize-cloudforge-support#comments</comments>
		<pubDate>Thu, 21 Feb 2013 18:37:41 +0000</pubDate>
		<dc:creator>Jesse Yowell</dc:creator>
				<category><![CDATA[CloudForge]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud development]]></category>
		<category><![CDATA[CloudForge Support]]></category>
		<category><![CDATA[CloudForge Support Portal]]></category>
		<category><![CDATA[collabnet cloud services]]></category>
		<category><![CDATA[helpstream]]></category>
		<category><![CDATA[zendesk]]></category>

		<guid isPermaLink="false">http://blogs.collab.net/?p=10977</guid>
		<description><![CDATA[<p>I&#8217;m sure most of you have noticed CloudForge&#8217;s new, sleek, Zendesk help portal.  What you may not know is the changes that are happening behind the scenes:  more support agents, a bigger and better knowledge base, and faster support response.  Not all of this is going to happen overnight, but the purpose of this blog is to help you utilize all you can out of our help portal.  Here are a list of things you may not have known about CloudForge&#8217;s support portal: The Server Status Page (aka status.cloudforge.com): As you can see in the above picture, we occasionally have ... <a href="http://blogs.collab.net/cloudforge/how-to-further-utilize-cloudforge-support">LEARN MORE &#187;</a></p><p>The post <a href="http://blogs.collab.net/cloudforge/how-to-further-utilize-cloudforge-support">Help us help you through CloudForge&#8217;s Support Portal!</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sure most of you have noticed CloudForge&#8217;s new, sleek, <a title="Zendesk Help Portal" href="http://blogs.collab.net/cloudforge/new-cloudforge-support-portal" target="_blank">Zendesk help porta</a>l.  What you may not know is the changes that are happening behind the scenes:  more support agents, a bigger and better knowledge base, and faster support response.  Not all of this is going to happen overnight, but the purpose of this blog is to help you utilize all you can out of our help portal.  Here are a list of things you may not have known about CloudForge&#8217;s support portal:</p>
<ul>
<li>
<h2>The Server Status Page (aka status.cloudforge.com):</h2>
</li>
</ul>
<p><a href="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/server_status.png"><img class="aligncenter size-full wp-image-10980" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/server_status.png" alt="server status Help us help you through CloudForges Support Portal!" width="919" height="179" title="Help us help you through CloudForges Support Portal!" /></a></p>
<p>As you can see in the above picture, we occasionally have to deal with maintenance (and the unfortunate outage&#8230;), but I bet you didn&#8217;t know that you could subscribe? Simply click on the title of any post and hit &#8216;Subscribe&#8217; &#8212; now you can receive the most recent updates via e-mail&#8230;note that this works on any page section on the Help Portal:</p>
<p><a href="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/sub2.png"><img class="aligncenter size-full wp-image-10981" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/sub2.png" alt="sub2 Help us help you through CloudForges Support Portal!" width="925" height="145" title="Help us help you through CloudForges Support Portal!" /></a></p>
<p>Not a fan of receiving e-mail updates?  We also send server status updates via Twitter.. check out <a href="https://twitter.com/CloudForgeOps">CloudForgeOps</a> for any updates.  Have questions, we have answers!</p>
<ul>
<li>
<h2>Feature Requests and Ideas:</h2>
</li>
</ul>
<p><a href="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/ideas.png"><img class="aligncenter size-full wp-image-10983" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/ideas.png" alt="ideas Help us help you through CloudForges Support Portal!" width="292" height="117" title="Help us help you through CloudForges Support Portal!" /></a>We want your ideas!  We definitely have some very good ones brought over from the Codesion days, but we still need your help in determining the next best features on CloudForge.  Be sure to submit and vote on anything you&#8217;d like to see!</p>
<ul>
<li>
<h2>For our Business customers.. the VIP section:</h2>
</li>
</ul>
<p><a href="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/vip.png"><img class="aligncenter size-full wp-image-10985" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/vip.png" alt="vip Help us help you through CloudForges Support Portal!" width="448" height="101" title="Help us help you through CloudForges Support Portal!" /></a></p>
<p>This is one of our newest sections just for our Business customers.  Did you know that we have 24/7 phone and live chat support for all Business customers?  We have plans to expand our support for Business customers to be even more robust so stay tuned!  If you happen to be a Business account holder that cannot see this section, please be sure to e-mail support@cloudforge.com.</p>
<h3> Questions? Comments?</h3>
<p>If you have any ideas on how we can help you further, give us a shout either through the forums, support@cloudforge.com, or <a href="https://twitter.com/CloudForgeHQ">CloudForgeHQ</a>.</p>
<p>The post <a href="http://blogs.collab.net/cloudforge/how-to-further-utilize-cloudforge-support">Help us help you through CloudForge&#8217;s Support Portal!</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p><img src="http://feeds.feedburner.com/~r/codesion/~4/7iElV6n53Uw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.collab.net/cloudforge/how-to-further-utilize-cloudforge-support/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.collab.net/cloudforge/how-to-further-utilize-cloudforge-support</feedburner:origLink></item>
		<item>
		<title>Java Web Apps to Rails, A Developer’s Experience…</title>
		<link>http://feeds.codesion.com/~r/codesion/~3/eR-0GsAW6NY/a-developers-experience-from-java-web-apps-to-rails</link>
		<comments>http://blogs.collab.net/cloudforge/a-developers-experience-from-java-web-apps-to-rails#comments</comments>
		<pubDate>Tue, 12 Feb 2013 18:00:25 +0000</pubDate>
		<dc:creator>Manju Putcha</dc:creator>
				<category><![CDATA[CloudForge]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[codesion]]></category>
		<category><![CDATA[collabnet cloud services]]></category>
		<category><![CDATA[Eclipse IDE]]></category>
		<category><![CDATA[Flex UI]]></category>
		<category><![CDATA[Grep]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://blogs.collab.net/?p=10901</guid>
		<description><![CDATA[<p>After transitioning from Java to Rails, I realized this may be a topic worth exploring within the CloudForge community.  This blog delves into my experience of switching from building Java/Flex applications to building Rails applications.   Let me share a little bit of history to help set the tone of this blog.  I have worked in procedural and OO languages (C/C++, Perl, Java) building web applications.  This is my first time developing on a Mac (not to mention, even a right click without a mouse was a mystery when I started).  So, the transition is not just to Rails, but to ... <a href="http://blogs.collab.net/cloudforge/a-developers-experience-from-java-web-apps-to-rails">LEARN MORE &#187;</a></p><p>The post <a href="http://blogs.collab.net/cloudforge/a-developers-experience-from-java-web-apps-to-rails">Java Web Apps to Rails, A Developer&#8217;s Experience&#8230;</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>After transitioning from Java to Rails, I realized this may be a topic worth exploring within the CloudForge community.  This blog delves into my experience of switching from building Java/Flex applications to building Rails applications.   Let me share a little bit of history to help set the tone of this blog.  I have worked in procedural and OO languages (C/C++, Perl, Java) building web applications.  This is my first time developing on a Mac (not to mention, even a right click without a mouse was a mystery when I started).  So, the transition is not just to Rails, but to Rails using a Mac interface.</p>
<p>The goal of this blog is to compare:  developer start-up time, developer tools, Java &amp; Ruby languages, and Web frameworks.</p>
<p><strong>Developer start up time:</strong></p>
<p>The last two Java web applications I worked on were huge code stacks with Flex UI and an Oracle database.  It took a week to get these applications to run, tweak and break because the setup process required me to install a plethora of tools:  version control, application servers, language packages, databases, and version management systems.</p>
<p>On the contrary, Rails comes pre-packaged with some of the tools mentioned above which reduced my setup time significantly.  It took less than a day on a developer Mac and one day on a brand new Mac.</p>
<p><strong>Developer Tools:</strong></p>
<p>When it was time to look at the code, I was a bit disappointed.  TextMate looked like a popular choice but it fell short in many ways.  I struggled to navigate the code, link the methods across files and follow the code. Grep was my only savior. Some of these might take getting used to, but I did not find anything in the menu that could help. Maybe I am biased, but I miss the intuitive Eclipse IDE and the debugging comfort that allowed me to understand the code better and quicker.<br />
The other developer tools such as database viewer, testing frameworks, and command line interface were pretty much the same, no surprises.</p>
<p><strong>Language</strong></p>
<p>My approach to learning Ruby was to start looking at code and figuring out pieces of syntax that did not make sense.  That turned out to be a bad idea. Constructs like “do |x| x+1” threw me off. It certainly helps when switching languages to map constructs.  However, mapping should only be the initial step to get acquainted.  I found it very important to understand the motivation behind creating the new language.  In the case of Ruby, the reasons I see are to reduce inconsistencies, to minimize verbosity (abstracting/hiding boiler plate code), to simplify complex operations. and to reduce programmer errors.</p>
<p>For example, Java has a concept of primitive data types.  Integer and int co-exist in the language and programmers need to make sure Object versions of these data types are used in the appropriate places.  The language does have warnings/errors in place to help the programmer.  However, a developer should be aware of these aspects.  Ruby eliminates that need since everything in Ruby is an Object including nulls.  Blocks in Ruby simplify iterating and modifying collections among other things.  There is significantly less code to maintain, notably code for parsing files, and code for getter/setter methods.</p>
<p>However, I miss parameters list, curly braces, return statements, camel case naming conventions and one way to declare variables (as opposed to the multiple symbols :, @ in Ruby) that make Java code readable.  The concept of ‘open classes’ that allow developers to go in and change a base class sounds scary.  This means the class I write might operate very differently at a later point and the only way to track it down is by looking at the files history.  It is possible in Java too, but I feel the language protects against it more than Ruby does.</p>
<p><strong>Framework</strong></p>
<p>Frameworks for web applications are probably not too different.  Since the purpose of the framework is same across languages and platforms, the main pieces are similar.  The differences I see are in the amount of automation the frameworks offer.  It helps to start with what makes a web application and what tools a developer needs to get things running.  A web application needs front end/UI code, server code, a web archive of deployed code, application server where the application lives, databases for persisting data, testing framework, a continuous integration system to test, build and deploy code.  Here is my mapping of Java Web application to a Rails app.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="148"><strong>Concept</strong></td>
<td valign="top" width="148"><strong>Java Technologies</strong></td>
<td valign="top" width="148"><strong>Rails</strong></td>
</tr>
<tr>
<td valign="top" width="148">Frontend</td>
<td valign="top" width="148">JSP, Flex</td>
<td valign="top" width="148">Views folder (ERB)</td>
</tr>
<tr>
<td valign="top" width="148">Backend</td>
<td valign="top" width="148">J2EE (src/main/java)</td>
<td valign="top" width="148">Ruby (Model, Controller folders)</td>
</tr>
<tr>
<td valign="top" width="148">Deployment</td>
<td valign="top" width="148">WEB-INF</td>
<td valign="top" width="148">Capistrano</td>
</tr>
<tr>
<td valign="top" width="148">Application Server</td>
<td valign="top" width="148">Tomcat</td>
<td valign="top" width="148">Brick</td>
</tr>
<tr>
<td valign="top" width="148">Database</td>
<td valign="top" width="148">Oracle/MySQL/..any other</td>
<td valign="top" width="148">Same as J2EE</td>
</tr>
<tr>
<td valign="top" width="148">Testing Framework</td>
<td valign="top" width="148">Junit</td>
<td valign="top" width="148">Rspec</td>
</tr>
<tr>
<td valign="top" width="148">Mock Testing</td>
<td valign="top" width="148">EasyMock, DBunit</td>
<td valign="top" width="148">Factory Girl, Relish</td>
</tr>
<tr>
<td valign="top" width="148">Build Management</td>
<td valign="top" width="148">Maven, Ant</td>
<td valign="top" width="148">RVM</td>
</tr>
<tr>
<td valign="top" width="148">URL Mapping</td>
<td valign="top" width="148">Web.xml</td>
<td valign="top" width="148">Routing.rb</td>
</tr>
</tbody>
</table>
<p>In conclusion, Ruby is much more flexible and Rails is a bit more restricted than I am used to.  The restrictions are part of the Convention over Configuration idea.  I need to get use to its various ways and unlearn a lot of Java habits.</p>
<p>How has your transition been? I’d love to know so please share your experiences by entering it in the comment section below.</p>
<p>&nbsp;</p>
<p>The post <a href="http://blogs.collab.net/cloudforge/a-developers-experience-from-java-web-apps-to-rails">Java Web Apps to Rails, A Developer&#8217;s Experience&#8230;</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p><img src="http://feeds.feedburner.com/~r/codesion/~4/eR-0GsAW6NY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.collab.net/cloudforge/a-developers-experience-from-java-web-apps-to-rails/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.collab.net/cloudforge/a-developers-experience-from-java-web-apps-to-rails</feedburner:origLink></item>
		<item>
		<title>New Year, New Dashboard Flow</title>
		<link>http://feeds.codesion.com/~r/codesion/~3/crKIJMyiUPE/new-year-new-dashboard-flow</link>
		<comments>http://blogs.collab.net/cloudforge/new-year-new-dashboard-flow#comments</comments>
		<pubDate>Fri, 08 Feb 2013 14:30:49 +0000</pubDate>
		<dc:creator>Patrick Wolf</dc:creator>
				<category><![CDATA[CloudForge]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[cloud development]]></category>
		<category><![CDATA[cloud services]]></category>
		<category><![CDATA[collabnet cloud services]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://blogs.collab.net/?p=10828</guid>
		<description><![CDATA[<p>2013 is off to a blazing start here at CloudForgeHQ and we have quite a few exciting new things coming your way this year.  As you know, we ended support for the user interface at app.Codesion.com in January, consolidating all new and existing customers onto CloudForge.  (Don&#8217;t worry, all of your existing service links on Codesion will continue to function, you just need to manage them from CloudForge.)  We are now focusing all of our attention on rapidly deploying new features on CloudForge, incorporating as much user feedback as possible. The first of these changes rolled-out this week on our Dashboard.  Previously, ... <a href="http://blogs.collab.net/cloudforge/new-year-new-dashboard-flow">LEARN MORE &#187;</a></p><p>The post <a href="http://blogs.collab.net/cloudforge/new-year-new-dashboard-flow">New Year, New Dashboard Flow</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>2013 is off to a blazing start here at <a title="CloudForgeHQ" href="http://twitter.com/cloudforgehq" target="_blank">CloudForgeHQ</a> and we have quite a few exciting new things coming your way this year.  As you know, we ended support for the user interface at app.Codesion.com in January, consolidating all new and existing customers onto <a title="CloudForge" href="https://app.cloudforge.com" target="_blank">CloudForge</a>.  (Don&#8217;t worry, all of your existing service links on Codesion will continue to function, you just need to manage them from CloudForge.)  We are now focusing all of our attention on rapidly deploying new features on CloudForge, incorporating as much user feedback as possible.</p>
<p>The first of these changes rolled-out this week on our <a title="Dashboard" href="https://app.cloudforge.com/dashboard" target="_blank">Dashboard</a>.  Previously, all account owners were presented with an Account Overview at the top of the Dashboard, providing an instant status update of their accounts. Although this Account Overview section could be quickly minimized to bring the Control Panel to the top of the Dashboard, most of our users wanted the Control Panel at the top by default.  Don&#8217;t forget, you can completely hide the Quick Start guide once you are familiar with its content.</p>
<p>Now, once the Quick Start Guide has been hidden, the Control Panel owns the top spot in our Dashboard allowing you to quickly and efficiently perform any task on your projects.  The Project List and Activity Feed follow the Control Panel up the ladder to the top of the page giving you a complete view of available actions, projects, and activities in your account.  The Account Overview block remains on the Dashboard (visible only to account owners) but it has moved to the bottom of the page.</p>
<p>At the end of the day, it&#8217;s more important to get work done first and then review your account as time allows.  We hope this change makes our site more intuitive and makes you more efficient.</p>
<div id="attachment_10836" class="wp-caption aligncenter" style="width: 310px"><a href="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/new-dash.png"><img class=" wp-image-10836" src="http://wp-img.s3.amazonaws.com/wp-content/uploads/2013/02/new-dash-300x197.png" alt="new dash 300x197 New Year, New Dashboard Flow" width="300" height="197" title="New Year, New Dashboard Flow" /></a><p class="wp-caption-text">Streamlined Dashboard</p></div>
<p>&nbsp;</p>
<p>The post <a href="http://blogs.collab.net/cloudforge/new-year-new-dashboard-flow">New Year, New Dashboard Flow</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p><img src="http://feeds.feedburner.com/~r/codesion/~4/crKIJMyiUPE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.collab.net/cloudforge/new-year-new-dashboard-flow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.collab.net/cloudforge/new-year-new-dashboard-flow</feedburner:origLink></item>
		<item>
		<title>Making the Most of your Activity Stream</title>
		<link>http://feeds.codesion.com/~r/codesion/~3/sHz2nS2oRjA/making-the-most-of-your-activity-stream</link>
		<comments>http://blogs.collab.net/cloudforge/making-the-most-of-your-activity-stream#comments</comments>
		<pubDate>Thu, 31 Jan 2013 14:30:06 +0000</pubDate>
		<dc:creator>Jack Repenning</dc:creator>
				<category><![CDATA[CloudForge]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[collabnet cloud services]]></category>

		<guid isPermaLink="false">http://blogs.collab.net/?p=10647</guid>
		<description><![CDATA[<p>What is it? Your Activity Stream records significant events, like version control changes, in a real-time historical record that lets you search and filter among entries, and correlate entries of different types, as well as providing hyperlinks to commit details, user profiles, project dashboards, and other related data.  You can find the Activity Stream display on the Dashboard, as well as the specific pages for projects, services, and user profiles.  The latter displays automatically limit response to the ones relevant to that page, but other than that all Activity Stream displays are similar. If you don&#8217;t see the Activity Stream ... <a href="http://blogs.collab.net/cloudforge/making-the-most-of-your-activity-stream">LEARN MORE &#187;</a></p><p>The post <a href="http://blogs.collab.net/cloudforge/making-the-most-of-your-activity-stream">Making the Most of your Activity Stream</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p>]]></description>
			<content:encoded><![CDATA[<h1>What is it?</h1>
<p>Your Activity Stream records significant events, like version control changes, in a real-time historical record that lets you search and filter among entries, and correlate entries of different types, as well as providing hyperlinks to commit details, user profiles, project dashboards, and other related data.  You can find the Activity Stream display on the Dashboard, as well as the specific pages for projects, services, and user profiles.  The latter displays automatically limit response to the ones relevant to that page, but other than that all Activity Stream displays are similar.</p>
<p>If you don&#8217;t see the Activity Stream display on your page, ask your administrator to turn on the version control &#8220;Users with read access see all commits&#8221; feature, or to grant you a role such as Activity Viewer, which includes the &#8220;Participation: View Activity&#8221; permission.</p>
<p>Wherever you find it, it should look pretty much like this (if you click this image, you should get a larger one in a new window, which might be a useful reference while I explain it).  At the top is a search box, but we&#8217;ll get back to that in just a moment. The bulk of the display is a list of activities, or events.  The entries are listed in reverse-chronological order (most recent first), and wherever possible display terms are hyperlinks to further detail.</p>
<ul>
<li>The first line is always some sort of identifier for the activity.  In this case, all activities are Git changes, and Git identifies changes with those big, unreadable &#8220;hash values&#8221; (like &#8220;b3640b0fea…&#8221;).  Other services have other identifiers.  But, fortunately, you don&#8217;t have to read it: just click it, and you&#8217;ll go to the appropriate detail page, with more detailed (and more consumable!) information.</li>
<li>The next line or so is typically some commentary provided by the author, along with the event being described.</li>
<li>Following that is information identifying the author (click to see their profile), and the project (click for the project dashboard).</li>
<li>Entries will often include additional info, such as lists of changed files &#8212; it all depends on the individual event.</li>
</ul>
<h1>Searching</h1>
<p>Now, back to that search box.  Actually, you might want to put this blog aside for just a moment, go to your own Dashboard, and play with searches a bit. You should find a lot of it quite obvious and useful, but you may also find a few cases that don&#8217;t do what you expected. That&#8217;s the time to come back here for explanations!</p>
<h3>Word search</h3>
<ul>
<li>Type a word into the search box and hit return.  The list will show only entries with that word.<a href="http://blogs.collab.net/wp-content/uploads/2013/01/merge.png"><img class="alignright size-thumbnail wp-image-10657" src="http://blogs.collab.net/wp-content/uploads/2013/01/merge-150x150.png" alt="merge 150x150 Making the Most of your Activity Stream" width="150" height="150" title="Making the Most of your Activity Stream" /></a>  For example, if I search for &#8220;merge,&#8221; I get this.  Two things are worth note:
<ul>
<li>Not only has the displayed list been shaved down to just the entries mentioning &#8220;merge,&#8221;</li>
<li>but there&#8217;s also a new label saying so, and a button to &#8220;Clear Results&#8221; (that is, to return to the original, full list).</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>Substring search (the wrong way)</h3>
<ul>
<li>Notice that the second entry (&#8220;fix merge damage&#8221;)  is not actually a merge,<a href="http://blogs.collab.net/wp-content/uploads/2013/01/ranch.png"><img class="alignright size-thumbnail wp-image-10658" src="http://blogs.collab.net/wp-content/uploads/2013/01/ranch-150x150.png" alt="ranch 150x150 Making the Most of your Activity Stream" width="150" height="150" title="Making the Most of your Activity Stream" /></a>it only mentions the word.  Let&#8217;s restrict the list to actual merges by searching for the sub-string &#8220;ranch&#8221; (contained in the word &#8220;branch&#8221;, in all the actual merge events).
<ul>
<li>What do we get? Nothing! What&#8217;s up with that?</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>Wildcard search</h3>
<ul>
<li>The problem here is that these searches are <em>word</em> searches,<a href="http://blogs.collab.net/wp-content/uploads/2013/01/ranch1.png"><img class="alignright size-thumbnail wp-image-10659" src="http://blogs.collab.net/wp-content/uploads/2013/01/ranch1-150x150.png" alt="ranch1 150x150 Making the Most of your Activity Stream" width="150" height="150" title="Making the Most of your Activity Stream" /></a> not <em>string</em> searches.  While &#8220;ranch&#8221; is a perfectly fine word, it doesn&#8217;t happen to be involved in any of our activities in this project!  What we need is a <em>wildcard search</em>: a search for &#8220;*ranch&#8221;.  In general:
<ul>
<li>* Means &#8220;anything or nothing&#8221; (our &#8220;*ranch&#8221; search would still find the Dude Ranch, if there were one)</li>
<li>? Means &#8220;exactly one unspecified character&#8221;</li>
</ul>
</li>
</ul>
<div></div>
<h3>Multi-word search</h3>
<ul>
<li>Some of these merges go into the branch &#8220;master&#8221;,<a href="http://blogs.collab.net/wp-content/uploads/2013/01/MergeBranchMaster.png"><img class="alignright size-thumbnail wp-image-10660" src="http://blogs.collab.net/wp-content/uploads/2013/01/MergeBranchMaster-150x150.png" alt="MergeBranchMaster 150x150 Making the Most of your Activity Stream" width="150" height="150" title="Making the Most of your Activity Stream" /></a>some come out.  Can we restrict this to just the ones coming out of master?  How about searching for &#8220;merge branch master&#8221;?  Whoa!  Nope.  That&#8217;s not right!  We get back all kinds of things besides the ones we want!
<ul>
<li>The problem here is that what we did was a &#8220;multi-word search.&#8221;  That&#8217;s interpreted as &#8220;show me every activity that includes any of these words.&#8221;  This is sometimes useful, like if you should wonder &#8220;Was that file named foo? or fu? or fyu?&#8221;</li>
</ul>
</li>
</ul>
<div></div>
<h3>Phrase search</h3>
<ul>
<li>But what we really want here is the phrase<a href="http://blogs.collab.net/wp-content/uploads/2013/01/QuotedMergeBranchMaster.png"><img class="alignright size-thumbnail wp-image-10662" src="http://blogs.collab.net/wp-content/uploads/2013/01/QuotedMergeBranchMaster-150x150.png" alt="QuotedMergeBranchMaster 150x150 Making the Most of your Activity Stream" width="150" height="150" title="Making the Most of your Activity Stream" /></a> &#8221;merge branch master,&#8221; not merely &#8220;any one of those words.&#8221;  There&#8217;s a way to do that, by quoting the phrase:
<ul>
<li>Search for &#8220;merge branch master&#8221; (with the quotes)</li>
<li>Now we get the list we wanted</li>
<li>Notice also that the apostrophes around master (in the results) do not interfere. Again, this is a <em>word-search</em> system; punctuation need not apply.</li>
</ul>
</li>
</ul>
<p>So, there you have it: a handy, searchable, real-time record of what&#8217;s happening in your organization!</p>
<p>How can you put it to work?</p>
<p>&nbsp;</p>
<p>The post <a href="http://blogs.collab.net/cloudforge/making-the-most-of-your-activity-stream">Making the Most of your Activity Stream</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p><img src="http://feeds.feedburner.com/~r/codesion/~4/sHz2nS2oRjA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.collab.net/cloudforge/making-the-most-of-your-activity-stream/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.collab.net/cloudforge/making-the-most-of-your-activity-stream</feedburner:origLink></item>
		<item>
		<title>New CloudForge Support Portal!</title>
		<link>http://feeds.codesion.com/~r/codesion/~3/w182kOZtGNQ/new-cloudforge-support-portal</link>
		<comments>http://blogs.collab.net/cloudforge/new-cloudforge-support-portal#comments</comments>
		<pubDate>Tue, 22 Jan 2013 15:00:13 +0000</pubDate>
		<dc:creator>Mohan Achar</dc:creator>
				<category><![CDATA[CloudForge]]></category>
		<category><![CDATA[cloud services]]></category>
		<category><![CDATA[CloudForge Support]]></category>
		<category><![CDATA[collabnet cloud services]]></category>
		<category><![CDATA[CollabNet Support]]></category>
		<category><![CDATA[zendesk]]></category>

		<guid isPermaLink="false">http://blogs.collab.net/?p=10677</guid>
		<description><![CDATA[<p>CollabNet is pleased to announce the launch of a new Support Portal for our CloudForge product which offers development platform as a service. The new support portal is located at: http://help.cloudforge.com The new, enhanced support portal is a significant improvement over our old forums, providing clean simple ticket system. The new portal includes many of the same great features you experienced in the past &#38; in addition also gives you greater flexibility, richer knowledge base articles and insight into your support cases. Added Benefits and Improvements to the Support Portal include: Real-time visibility (status) and tracking of your case through ... <a href="http://blogs.collab.net/cloudforge/new-cloudforge-support-portal">LEARN MORE &#187;</a></p><p>The post <a href="http://blogs.collab.net/cloudforge/new-cloudforge-support-portal">New CloudForge Support Portal!</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>CollabNet is pleased to announce the launch of a new Support Portal for our CloudForge product which offers development platform as a service. The new support portal is located at:</p>
<p align="center">http://help.cloudforge.com</p>
<p style="text-align: center;"><a title="CloudForge Support Portal" href="http://help.cloudforge.com"><img class=" wp-image-10697 aligncenter" title="CloudForge_Support_Portal" src="http://blogs.collab.net/wp-content/uploads/2013/01/CloudForge_Support_Portal-300x236.png" alt="CloudForge Support Portal 300x236 New CloudForge Support Portal!" width="300" height="236" /></a></p>
<p>The new, enhanced support portal is a significant improvement over our old forums, providing clean simple ticket system. The new portal includes many of the same great features you experienced in the past &amp; in addition also gives you greater flexibility, richer knowledge base articles and insight into your support cases.</p>
<p>Added Benefits and Improvements to the Support Portal include:</p>
<ul>
<li>Real-time visibility (status) and tracking of your case through Mobile app</li>
<li>Advanced search capabilities across different knowledge bases</li>
<li>Ability to add cases through Social tools like twitter &amp; Facebook</li>
<li>New feature request forum with ability to vote on popular product suggestion</li>
</ul>
<p>Important Updates:</p>
<ul>
<li>With the new customer portal your login information will be the same as your CloudForge login</li>
<li>The new Portal will be for all new issues and cases.</li>
<li>Your old support cases will be maintained in the old system for 2-3 months.</li>
<li>You will be able to access this portal from the new one via web links.</li>
</ul>
<p>We would love to hear what you think of the new Support portal so feel free to drop us a line.</p>
<p>support@cloudforge.com</p>
<p>The post <a href="http://blogs.collab.net/cloudforge/new-cloudforge-support-portal">New CloudForge Support Portal!</a> appeared first on <a href="http://blogs.collab.net">blogs.collab.net</a>.</p><img src="http://feeds.feedburner.com/~r/codesion/~4/w182kOZtGNQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.collab.net/cloudforge/new-cloudforge-support-portal/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.collab.net/cloudforge/new-cloudforge-support-portal</feedburner:origLink></item>
	</channel>
</rss>
