Redesigned “commits” screen

By on July 7, 2011

There are two essential screens—“pages”, if you prefer—on a site like Bitbucket. The “source” screen displays a project’s source files in their current state or as they existed at some point in the past. The “commits” screen depicts a project’s changes over time, which helps to answer questions such as:

Until late last week, Bitbucket’s commits screen looked something like this:

Old “commits” screen (click to enlarge)

The fifteen most recent commits were displayed, and one could use the pagination links to view older commits. This was perfectly sufficient for answering the question “what’s happened lately?” It was *horrible* for questions such as “when did Jonathan last fiddle with Google Analytics code?” Have fun clicking through 300 pages!

The solution was to return to the command line and enter something like:


$ hg log --user jonathan --keyword ga

FedEx

Four times each year, Atlassian developers and a smattering of non-developers engage in “FedEx”. Everyone chooses a cool project to work on from 2pm on a Thursday until 4pm the following day when we all present what we’ve managed to get done. The idea is that many of the cool features developed during FedEx will actually ship. Well, this is what we shipped:

New “commits” screen (click to enlarge)

Brodie had the idea of leveraging Mercurial’s “revset” functionality to make the commits log searchable. We decided to team up for FedEx and make it happen. Now, there’s no need to leave Bitbucket just to find a commit:

Commits filter input

Revsets are much more than an alternative to

hg log --user

and

hg log --keyword

. My favourite filter, for example, is

not merge()

.

It’s great to be able to tap into a powerful Mercurial feature without leaving Bitbucket, but one shouldn’t be forced to conform to a DSL’s syntax to do a simple search. So, we automatically convert simple text searches into the appropriate revset query. Searching for static media, for example, will find commits containing the word “static” or the word “media”. Searching for “static media” (with quotes) would return commits containing both words.

But wait, there’s more

Brodie and I weren’t satisfied with just making the screen work better. We were out to win FedEx, after all, so it had to look great too. We made a number of changes to the way in which the information is displayed:

Future improvements

Several users have brought it to our attention that these changes make it difficult to see at a glance which branch each commit is on. We’re keen to address this, and will be rolling out a small change at some point within the next couple of weeks.

Chime in in the comments thread to let us know what you think!

  • http://www.kamilkisiel.net Kamil Kisiel

    This is awesome. Great work guys. I always thought the previous Commits interface was rather weak and a number of my coworkers complained it was confusing and hard to follow the tree. This is a *huge* step up just UI wise, and being able to use revsets is a killer feature. Thanks!n

  • http://www.kamilkisiel.net Kamil Kisiel

    This is awesome. Great work guys. I always thought the previous Commits interface was rather weak and a number of my coworkers complained it was confusing and hard to follow the tree. This is a *huge* step up just UI wise, and being able to use revsets is a killer feature. Thanks!

  • http://www.kamilkisiel.net Kamil Kisiel

    This is awesome. Great work guys. I always thought the previous Commits interface was rather weak and a number of my coworkers complained it was confusing and hard to follow the tree. This is a *huge* step up just UI wise, and being able to use revsets is a killer feature. Thanks!

    • http://davidchambersdesign.com/ David Chambers

      Cheers, Kamil. It’s great to hear that you’re as happy with the changes as we are.

  • http://mgeisler.myopenid.com/ Martin Geisler

    u00a0Very nice, I like it! One suggestion, though: I think you should join the search terms with AND instead of OR.nnWhen I look for a changeset, then I almost always look for some specific changeset. This means that I may start broad and search for the expected author of the changeset. If I did not find it, then I’ll add more search terms to narrow down my search. If the words are joined by AND, then I can just keep adding search terms and the new results will be a subset of the old results — just what I want when I drill down to a specific changset.nnIn my experience, I never want to broaden a search — and so the OR operator is a rare think to use. I guess this is why Google also defaults to AND between the search words.

  • http://mgeisler.myopenid.com/ Martin Geisler

     Very nice, I like it! One suggestion, though: I think you should join the search terms with AND instead of OR.

    When I look for a changeset, then I almost always look for some specific changeset. This means that I may start broad and search for the expected author of the changeset. If I did not find it, then I’ll add more search terms to narrow down my search. If the words are joined by AND, then I can just keep adding search terms and the new results will be a subset of the old results — just what I want when I drill down to a specific changset.

    In my experience, I never want to broaden a search — and so the OR operator is a rare think to use. I guess this is why Google also defaults to AND between the search words.

  • http://mgeisler.myopenid.com/ Martin Geisler

     Very nice, I like it! One suggestion, though: I think you should join the search terms with AND instead of OR.

    When I look for a changeset, then I almost always look for some specific changeset. This means that I may start broad and search for the expected author of the changeset. If I did not find it, then I’ll add more search terms to narrow down my search. If the words are joined by AND, then I can just keep adding search terms and the new results will be a subset of the old results — just what I want when I drill down to a specific changset.

    In my experience, I never want to broaden a search — and so the OR operator is a rare think to use. I guess this is why Google also defaults to AND between the search words.

    • http://davidchambersdesign.com/ David Chambers

      Thanks for the feedback, Martin. Perhaps…

      “foo bar” baz

      should be translated to…

      keyword(foo bar) and keyword(baz)

      rather than…

      keyword(foo) and keyword(bar) or keyword(baz)

      In fact, the more I think about it the more I like it. I’ll ask Brodie what he thinks of the idea in the morning.

  • Dobrosu0142aw u017bybort

    Looks better.nnOne request: when I focus on date like: “3 weeks ago” I would like to see exactly date of commit if possible (like on github).nnCheers

  • Dobrosław Żybort

    Looks better.

    One request: when I focus on date like: “3 weeks ago” I would like to see exactly date of commit if possible (like on github).

    Cheers

  • Dobrosław Żybort

    Looks better.

    One request: when I focus on date like: “3 weeks ago” I would like to see exactly date of commit if possible (like on github).

    Cheers

    • http://davidchambersdesign.com/ David Chambers

      I agree that this’d be useful, Dobrosław. In fact, the first of many such tweaks is already running on our staging server, so expect to see timestamp-related changes appear on various screens over the next few weeks.

  • http://blog.markstahler.ca/ Mark

    I love the updates you are provides via the blog. Keep up the great work improving Bitbucket .

  • http://blog.markstahler.ca/ Mark

    I love the updates you are provides via the blog. Keep up the great work improving Bitbucket .

  • http://blog.markstahler.ca/ Mark

    I love the updates you are provides via the blog. Keep up the great work improving Bitbucket .

  • Chander Raja

    We were using the changeset numbers to track our builds. Is there a plan to put them back in the commits page?

  • Chander Raja

    We were using the changeset numbers to track our builds. Is there a plan to put them back in the commits page?

  • Chander Raja

    We were using the changeset numbers to track our builds. Is there a plan to put them back in the commits page?

  • Chander Raja

    We were using the changeset numbers to track our builds. Is there a plan to put them back in the commits page?

    • http://davidchambersdesign.com/ David Chambers

      We decided to remove the revision numbers (r1, r2, r3, etc.) from the screen because they’re a misleading feature or Mercurial. Whereas a changeset’s revision _hash_ is canonical, its revision _number_ can differ from one clone of a repository to another.

      We feel strongly that hashes are the right way to reference changesets. That said, the revision number is still visible on the individual changeset screen, so you can continue to use these numbers to track your builds.

  • Don Hopkins

    Please please please add a way to display the absolute date of each commit, instead of vague imprecise text like “one month ago”.u00a0

  • Don Hopkins

    Please please please add a way to display the absolute date of each commit, instead of vague imprecise text like “one month ago”. 

  • Don Hopkins

    Please please please add a way to display the absolute date of each commit, instead of vague imprecise text like “one month ago”. 

    • http://davidchambersdesign.com/ David Chambers

      Thanks for the feedback, Don. This is a popular request. I’ll make a change today, and we’ll get it out as soon as possible.

    • http://davidchambersdesign.com/ David Chambers

      We pushed a change earlier this afternoon. Let us know what you think. :)

  • av

    it would really help if you changed the history tab as well, as it’ll help to be able to see more on one page.nnthanks

  • av

    it would really help if you changed the history tab as well, as it’ll help to be able to see more on one page.

    thanks

  • av

    it would really help if you changed the history tab as well, as it’ll help to be able to see more on one page.

    thanks

  • http://simonwhite.co.uk/ Simon White

    Just started using BitBucket. Absolutely loving it, and it’s free :D

  • http://simonwhite.co.uk/ Simon White

    Just started using BitBucket. Absolutely loving it, and it’s free :D

  • http://simonwhite.co.uk/ Simon White

    Just started using BitBucket. Absolutely loving it, and it’s free :D

  • Lidstromso

    Critically ill
    patients, and every temple to burn incense.

    Sick as a mountain
    down, sick to go away on foot.

     

    Jordan Retro
    7

    Jordan 7 Olympic

    http://www.jordanretro7olympics.com
     

  • http://davidchambersdesign.com/ David Chambers

    Cheers, Kamil. It’s great to hear that you’re as happy with the changes as we are.

  • http://davidchambersdesign.com/ David Chambers

    Cheers, Kamil. It’s great to hear that you’re as happy with the changes as we are.

  • http://davidchambersdesign.com/ David Chambers

    Thanks for the feedback, Martin. Perhapsu2026nn”foo bar” baznnshould be translated tou2026nnkeyword(foo bar) and keyword(baz)nnrather thanu2026nnkeyword(foo) and keyword(bar) or keyword(baz)nnIn fact, the more I think about it the more I like it. I’ll ask Brodie what he thinks of the idea in the morning.

  • http://davidchambersdesign.com/ David Chambers

    Thanks for the feedback, Martin. Perhaps…

    “foo bar” baz

    should be translated to…

    keyword(foo bar) and keyword(baz)

    rather than…

    keyword(foo) and keyword(bar) or keyword(baz)

    In fact, the more I think about it the more I like it. I’ll ask Brodie what he thinks of the idea in the morning.

  • http://davidchambersdesign.com/ David Chambers

    I agree that this’d be useful, Dobrosu0142aw. In fact, the first of many such tweaks is already running on our staging server, so expect to see timestamp-related changes appear on various screens over the next few weeks.

  • http://davidchambersdesign.com/ David Chambers

    I agree that this’d be useful, Dobrosław. In fact, the first of many such tweaks is already running on our staging server, so expect to see timestamp-related changes appear on various screens over the next few weeks.

  • http://davidchambersdesign.com/ David Chambers

    We decided to remove the revision numbers (r1, r2, r3, etc.) from the screen because they’re a misleading feature or Mercurial. Whereas a changeset’s revision _hash_ is canonical, its revision _number_ can differ from one clone of a repository to another.nnWe feel strongly that hashes are the right way to reference changesets. That said, the revision number is still visible on the individual changeset screen, so you can continue to use these numbers to track your builds.

  • http://davidchambersdesign.com/ David Chambers

    We decided to remove the revision numbers (r1, r2, r3, etc.) from the screen because they’re a misleading feature or Mercurial. Whereas a changeset’s revision _hash_ is canonical, its revision _number_ can differ from one clone of a repository to another.

    We feel strongly that hashes are the right way to reference changesets. That said, the revision number is still visible on the individual changeset screen, so you can continue to use these numbers to track your builds.

  • http://davidchambersdesign.com/ David Chambers

    Thanks for the feedback, Don. This is a popular request. I’ll make a change today, and we’ll get it out as soon as possible.

  • http://davidchambersdesign.com/ David Chambers

    We pushed a change earlier this afternoon. Let us know what you think. :)

  • http://davidchambersdesign.com/ David Chambers

    Thanks for the feedback, Don. This is a popular request. I’ll make a change today, and we’ll get it out as soon as possible.

  • http://davidchambersdesign.com/ David Chambers

    We pushed a change earlier this afternoon. Let us know what you think. :)