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
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.