A little help from our friends

A few months ago, Axis Communications, the world’s leading expert in network video, got in touch with us to discuss some features they were missing in their local Gitorious installation. We agreed that the Gitorious team would develop these features on a consulting basis for them, and today we’re proud to announce that these features are available for all users of Gitorious; be it on gitorious.org or on one of the hundreds of self-hosted Gitorious installations out there.

We are especially excited to announce these features since they demonstrate one of the greatest benefits of free software: that features developed for one user of the software is made available to all other users of the software. We are very grateful to Axis Communications for hiring us to develop these features, and we’re equally grateful that they decided to share the new features with other Gitorious users. Thanks!

Here’s a short summary of what’s new:

Graphical log view

Once you work with more than a single branch in Git, you’ll feel the need to visualize your repository’s history. There are various tools on the desktop that do this.

Starting today, you’ll find a link from the commit log for any Git branch or tag in Gitorious to a graphical representation of the log. Here’s a screenshot of how it looks for Gitorious itself:

Click on the commit message to jump to a specific commit, click on the commit SHA1 to view a graph starting from that commit.

The graph does not require any browser plugins to work, and should work on any fairly modern web browser. We developed two tools that work together to generate the graph view:

  • capillary.rb generates a JSON data structure from Git’s log
  • capillary.js  renders the JSON output from capillary.rb in the browser using Raphaël. If you look at the source, you’ll find that capillary.js will output a lot of other formats as well, including ASCII.

Annotations, aka. blame

Ever found yourself wondering who on earth wrote a specific line in a program file and why? In that case you may have used Git’s blame tool, which lets you see which commit last changed each line in a file. Blame is now available in Gitorious too, whenever you’re viewing a file/blob in a repository. Simply hit the “Blame” link from the panes to the right above the file, and you’ll see the same contents along with some more details:

To the left you’ll see a link to the commit that changed this line, along with the name of the author and when the change was made. Toggle between normal blob view, blame and history using the panes at the top right.

Display diffs between several refs

One of the very first features in Gitorious was the ability to view the diff of a single commit. Since then we have added support for viewing the diffs introduced by a merge request, and today we’ll let you view the diff between any two Git refs (SHA1/branch/tag) in a repository. The first place you’ll find this is next to the activity log entry when someone pushes to a repository on Gitorious:

Here we can see that the user Goatlord pushed some commits to a repository, and there’s a link to view all the changes introduced in this push – which brings you here:

All the changes between two commits, displayed either inline or side-by-side. You’ll find links to compare branches and tags to each other from the tree views in Gitorious; simply select which tag or branch to compare from the right sidebar.

How to upgrade your own server

If you’re running your own Gitorious server, you have probably read about our versioning scheme on the Gitorious wiki. Today’s features are in our latest version, version 2.1.0. In addition to the normal steps (run bundler, remove cached javascript and css files) you’ll need to load a few Git submodules – “git submodule init && git submodule update” should take care of this. If you run into trouble upgrading, the mailing list is full of helpful people.

Over to you

First of all: have fun using these features, we hope you’ll find them useful. If you fix any bugs, don’t hesitate to submit a merge request. The same goes if you have developed any features for your own Gitorious server that you want to share. If there are other features you’d like to see in Gitorious and you want help in developing these, please get in touch with us. There is no big corporation behind Gitorious, neither do we charge any license fees that could pay our bills. It’s up to Gitorious’ users to help us evolve.


  1. christian
    Posted October 20, 2011 at 2:51 pm | Permalink

    Just a small note: 2.1.0 is not available just yet. We’ll run the update on gitorious.org for a little while before we tag it, to make sure it’s stable. eager users can get the latest and greatest from master.

  2. Posted October 21, 2011 at 8:59 am | Permalink

    Nice work guys, this looks very useful! :)

  3. Christian Johansen
    Posted October 21, 2011 at 9:57 pm | Permalink

    The tag is out: https://gitorious.org/gitorious/mainline/trees/v2.1.0

    Upgrade instructions: https://gitorious.org/gitorious/pages/Upgrading

  4. someone
    Posted October 24, 2011 at 9:16 am | Permalink

    If Gitorious would get an integrated bug tracker it would perfect.

  5. greg
    Posted November 30, 2011 at 11:55 am | Permalink

    Is it me or are tag “labels” only displayed when clicking a given commit ? When viewing my branch, I was hoping to see which tags exist (and “where” they are) without going through each and every revision ?

    • greg
      Posted November 30, 2011 at 1:16 pm | Permalink

      Ok well it seems it just took a little while for Gitorious to realize something changed, I know see the tag as expected.

One Trackback

  1. […] year ago we announced three great new features in Gitorious, sponsored by a company using Gitorious internally. A few […]

%d bloggers like this: