• Explore GitHub

    defunkt 21 Jan 2010

    This week kneath and I (with some help from The Changelog) rolled out Explore GitHub – a new page showing trending repositories, repositories recently featured on The Changelog, and recent episodes of their weekly podcast.

    The trending repos are updated every 20 minutes so have fun watching projects climb the charts as they’re blogged and tweeter about throughout the day.

  • Notification Improvements

    kneath 17 Jan 2010

    Update 1/19/2010: Page build notifications have been added to the list of notifications you can turn on/off and have moved to the Notifications section as well. Thanks!

    Today we rolled out updates to the messaging & notification systems for GitHub. We've added a couple new features and improved the existing messaging system.

    Notification Center

    If you check the account settings page, you'll notice a new tab called Notification Center that holds preferences for all the emails you get from GitHub.

    Notification Center

    Commit Comment Notifications

    We've enabled two new email notifications by default: comments on your commits (where you are listed as an author or committer) and comments on commits in your repositories. We understand some commits can get noisy, so we added the ability to turn notifications off on a per-commit basis.

    Commit Comments

    Improved email subjects

    All of our email notifications were previously "[GitHub] user sent you a message." They should be considerably more descriptive and thread friendly now.

    Email Subjects

    Notifications vs Messages

    We've separated out pull requests and issue comments into a new category called notifications. Your inbox should now be filled solely with actual messages. Notifications will show up next to your username (in grey), while the inbox count only refers to actual messages.

    Sample Userbox

    Another small update is that we've added a mark all as read button to the inbox and notification sections.

    We know there's always room for improvement with our messaging and notifications — but hopefully this is a step in the right direction. Hope you enjoy!

    P.S.: I'd like to take a moment to thank the fine folks who made MockSMTP. It made testing these new email notifications so much easier. If you're looking for testing app-generated emails locally, check it out.

  • Improved Commit Diffs

    rtomayko 12 Jan 2010

    We recently rolled out a bunch of improvements to commit pages to make reviewing diffs a bit more pleasant.

    Diffstats

    Diffstat style histograms of insertions and deletions for each file are now displayed on commit pages. This is useful for getting a high level feel for the impact of a commit:

    sexy diffstat

    The diffstat display is similar in spirit to the output generated by git diff --stat: a numeric representing the total number of changed lines (insertions + deletions) followed by a simple visualization of the insertion to deletion ratio.

    Rename Detection

    Git doesn’t track file renames, but it does support heuristic detection of renamed files when performing diff and log operations. We’ve enabled it. The file list now displays a single line for renames instead of separate file add/remove lines:

    diffstat + rename detection

    While it’s nice to see renames reported as such in the file list, the larger benefit comes with the actual diff. Without rename detection, commits with even a small number of renamed files can generate large and noisy diffs. The entire file contents is displayed twice: first with all deleted lines and then again with all added lines. These same diffs are reduced down to pure signal with rename detection enabled because only the lines modified between the two files are shown:

    diffs + rename detection

    See the -M option to git-diff(1) for information on using rename detection from the command line.

    Added / Removed Files

    Previously, files added or removed in a commit were shown in the file list at the top of commit pages but the actual diffs were omitted. This was a simple guard against Insanely Large Diffs That Crashed Browsers but had a few notable drawbacks:

    • It was easy to miss important changes introduced by added or removed files when reviewing commits.
    • It wasn’t possible to comment on specific lines in added or removed files.
    • It didn’t always avoid large diffs. Consider cases like SQL database dumps where each line of a large generated file is modified as part of an otherwise tiny commit. Omitting added/removed files gave no guarantee that diffs would not exceed a reasonable size.

    According to Aldo Cortesi’s GitHub project analysis, the average commit touches about 4 files and 19 lines of code. We felt that commit pages needed to do a better job showing all pertinent information on these common case commits, so from now on you’ll see diffs for added and removed files:

    comment on added files

    Large Diffs

    Displaying added/removed files left the problem of how to deal with very large diffs. What we came up with is a set of rules for omitting portions of large diffs that ensures a sane upper bound on overall diff size. It works something like this:

    • Diffs are not shown for any individual file with more than 300 changed lines (this includes modified files as well as added/removed files).
    • No more than 150 total file diffs are displayed.
    • No more than 3,000 total changed lines are shown across all diffs.

    While we expect to tune these numbers over the coming weeks, the result so far has been diffs that show more of what you typically want to see and less of what you don’t.

  • New Repository Headers!

    kneath 27 Dec 2009

    We just pushed out an updated header design for all repository pages, you can see it in action on any of our project pages

    The new headers fixed some long outstanding bugs (downloading the wrong branch for example) and added a few new little features (exposing HTTP clone urls, noting which branch you’re currently on)

    Hope you like ’em!

  • Merge Commits are Back (and Better than Ever)

    pjhyett 2 Dec 2009

    After a long hiatus, we’re linking to merge commits again. We truncated merge commits months ago, because they didn’t provide any information beyond the shas of the parents, but now we’re exposing the diff between them as an overview of what changed in the branch.

    Essentially, what we’re doing behind the scenes is: git diff parent1…parent2

    This page will become the basis for a more extensive code review system that, coupled with our current code commenting, will really provide a lot of value for large projects.

    (If older merge commits aren’t showing diffs, it’s most likely that it got cached without the additional data)

  • Multiple file gist improvements

    kneath 18 Nov 2009

    We've always had the ability to embed multiple file gists:

    But today we added the ability to embed specific files in a multi-file gist!

    We also added permalinks next to each file name so you can hard link to specific files like so

    Enjoy!