Upsource: New Repository Browsing and Code Review Tool by JetBrains

JetBrains, the company behind the popular IntelliJ IDEA, recently has released a new productivity tool into the wild. JetBrains Upsource is a browser-based repository browsing and code review tool. Freshly released in version 1.0, it boasts a number of very interesting and useful features already now. In this article, I’d like to give you a short overview of the goodness you’ll find in this tool.

With Upsource, JetBrains extend their portfolio of software development and collaboration tools with a new building block. Besides their issue tracker YouTrack and the continuous integration server TeamCity, they now add a repository browsing and code review tool to the list. By that, JetBrains move a step nearer to becoming a full-stack vendor for integrated software development support tools such as Atlassian.

Let’s have a look at what Upsource has to offer.

Repository Browsing

As a repository browsing tool, Upsource provides you with the typical browsing functions needed to obtain both a general overview and a deeper insight into your source code repositories. But there is more.

Sophisticated Code and Commit Search

Upsource comes with a sophisticated search functionality which not only allows you to perform simple full-text searches, but also more advanced searches. For Java projects, you get a similar search facility as you’re already accustomed to from the IntelliJ IDEA. For example, camel-hump search is available, e.g. searching for “askssm” will find Google Guava’s class AbstractSortedKeySortedSetMultimap if this library is included in your Maven project or if you happen to be Google and you’re developing the Guava library.

Besides that, you can search for individual commits. Upsource gives you a powerful query language with content assist which makes it easy to define complex queries on your repository’s commits. Just press the well-known keyboard shortcut Ctrl-Space for content assist while in the search bar for the commit history and a popup will give you a hint of all available query elements you can use in the current context. To give you just a few examples what you can do with Upsource’s advanced commit search:

  • find all Git merge commits with is: merge
  • pick one particular commit with e.g. id: f10fc5c
  • find all commits on branch develop from user John Doe which are no merge commits with: author: {john.doe <john.doe@acme.com>} and branch: develop and not is: merge
  • find all commits that contain the word test in their message between Dec 1st and Dec 3rd with: after-eq: 2014-Dez-01 and before: 2014-Dez-03 and "test" (note that the German locale is used in this example)
  • find all commits which haven’t been reviewed yet with has: {no review}

Direct Links to Code Lines or Code Areas

You can select individual lines of code or a complete text selection from your sources and have a link generated to this code fragment. You can then share this link with your team members, making discussions about a software project a lot easier.

Static Code Analysis for Java Projects

If your code base is a Java or JavaScript project, you get all the static code analysis features that are already available in IntelliJ IDEA. Results from the code analysis are shown in the source view in the same way as in IntelliJ (gutter marks). For instance, Upsource highlights duplicate code and displays in which file the duplication was found, it shows unused members and methods, possible null dereferences and a lot more.

Advanced Browsing for Java Projects

There’s more in store for Java projects: By clicking on a variable or class name in a Java source file, you can either navigate to the declaration, find all usages, or view the hierarchy of this element. Besides these options, the JavaDocs for this element and its definition is shown in a popup. Ctrl-Left-Click directly takes you to the definition of the selected element. So, you can virtually browse your code base as you’re already used to from your IDE.

More repository browsing features at a glance are:

  • support for Git, Mercurial, Subversion, and Perforce repositories
  • list recent changes in the repository
  • show inline diffs and side-by-side diffs
  • diffs where only parts of a line are changed are shown in-place on a single line, avoiding a confusing remove line/add line display of diffs
  • a code base can be explored and searched in any revision
  • view the history of files, show annotations (blame function)
  • view repository activity as a punch card graph
  • source view of Java projects is similar to the editor of IntelliJ: code folding is enabled and direct navigation to inherited or derived classes and interfaces is possible
  • Maven projects are indexed including their dependencies. I.e., you can even browse into the code of the included libraries and into the sources of the JDK.
  • issue ids in commit messages are recognized and automatically linked with your issue tracker
  • compare two branches or two revisions with each other

Code Review

Upsource provides the tools for establishing a code review process for software development projects. Anybody can create branch reviews or reviews of individual commits. A review is shared between the authors of the reviewed code, a group of reviewers, and a group of watchers. Comments can be added to the review and to the code under review, which in turn can be answered by other team members. Furthermore, you can comment on revisions, branches, or individual lines of code. Comments support Markdown syntax, and you can directly address your team colleagues with @mentions. By that, lively discussions can be held directly at the source level.

A simple workflow for reviews is available, but is not imposed on the team. You can mark reviews as completed, and you can search for open reviews. Email notifications and news feeds help you keep track of your open tasks.

Licensing

Upsource is free for up to ten users (including one admin and a guest account). A license has to be purchased for more users. See Upsource Licensing for pricing details. This pricing model makes Upsource ideal for small teams or evaluators to quickly get started with Upsource. As usual with other JetBrains products, open source teams and educational institutions can be granted free licenses upon request.

Download and Installation

The Upsource download comes at a weight of about 500 MB. Unzipping the downloaded archive, starting up the server and providing an initial configuration is a breeze. It took me no more than 5 minutes to get the Upsource server up and running the first time with a sample Github repository configured for browsing. So you should really go ahead and try it out for yourself. There’s no fuss to be feared in configuring the server. All you need to know about getting started with Upsource can be found in a twenty line readme file.

What’s More to Come

The Upsource roadmap reveals the next things to come. Most notably are the items Git hosting and improved integration with other JetBrains tools. With the ability to host Git repositories, Upsource aims to position itself besides tools such as Atlassian Stash. With an improved integration with its other collaboration tools, JetBrains with Upsource strives to offer an integrated software development and collaboration environment as we currently know it from the Atlassian ecosystem.

Short URL for this post: http://wp.me/p4nxik-2hM
Roland Krüger

About Roland Krüger

Software Engineer at Orientation in Objects GmbH. Find me on Google+, follow me on Twitter.
This entry was posted in Agile Methods and development, Did you know? and tagged , , , . Bookmark the permalink.

2 Responses to Upsource: New Repository Browsing and Code Review Tool by JetBrains

  1. On a side note – upsource UI seems to be written in GWT…

  2. Roland Krüger Roland Krüger says:

    Yes it is, it sports a conspicuous __gwt_historyFrame iframe ;-)

Leave a Reply